亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linux:復制并創建目標目錄(如果不存在)

Linux:復制并創建目標目錄(如果不存在)

冉冉說 2019-12-10 10:14:58
我想要創建目標目錄(如果不存在)的命令(或cp的選項)。例:cp -? file /path/to/copy/file/to/is/very/deep/there
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

mkdir -p "$d" && cp file "$d"

()沒有此類選項cp。


查看完整回答
反對 回復 2019-12-10
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

簡短答案

要復制myfile.txt到/foo/bar/myfile.txt,請使用:


mkdir -p /foo/bar && cp myfile.txt $_

這是如何運作的?

這有幾個組成部分,因此我將逐步介紹所有語法。


POSIX標準中指定的mkdir實用程序創建目錄。的說法,每文檔,會造成MKDIR到-p


創建任何缺少的中間路徑名組件


意味著在調用時mkdir -p /foo/bar,mkdir將創建/foo , /foo/bar如果/foo尚不存在。(如果沒有-p,它將拋出錯誤。


如POSIX標準(或Bash手冊,如果您愿意)&&中所述,列表運算符的作用是只有成功執行后才能執行。這意味著如果由于失敗的多種原因之一而失敗,該命令將不會執行。cp myfile.txt $_mkdir -p /foo/barcpmkdir


最后,$_作為第二個參數傳遞的cp是“特殊參數”,它可以避免重復長參數(如文件路徑)而不必將其存儲在變量中。根據Bash手冊,它:


擴展到上一個命令的最后一個參數


在這種情況下,這就是/foo/bar我們傳遞給的mkdir。因此,cp命令將擴展為cp myfile.txt /foo/bar,將復制myfile.txt到新創建的/foo/bar目錄中。


請注意,$_是不是 POSIX標準的一部分,所以理論上Unix的變種可能具有不支持此構建物的外殼。但是,我不知道任何不支持的現代外殼$_;當然Bash,Dash和zsh都可以。


最后一點:在此答案開頭給出的命令假定您的目錄名稱中沒有空格。如果要處理帶有空格的名稱,則需要用引號將它們引起來,不會被視為mkdir或的不同參數cp。因此,您的命令實際上如下所示:


mkdir -p "/my directory/name with/spaces" && cp "my filename with spaces.txt" "$_"


查看完整回答
反對 回復 2019-12-10
  • 3 回答
  • 0 關注
  • 3924 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號