Cp
如何最容易地在其原始目錄中復製文件?
我想做的基本上是
cp long/directory/path/file long/directory/path/file-copy
這種或類似的操作很常見。兩次輸入整個路徑顯然很尷尬,即使使用自動完成或複制粘貼也是如此。有幾種簡單的方法可以做到這一點,但似乎都不理想:
- 首先
cd
進入目錄,然後簡單地cp file file-copy
. 最少的擊鍵,但我最終進入了我並不真正想要的目錄。- 將上述內容包裝在一個子shell中,
sh -c 'cd dir-path; cp file file-copy'
, 以製作cp
本地。很公平,但這意味著我必須在字元串文字中鍵入命令,這會禁用自動完成並且總體上不是很好。- 將 dir 定義為變數,然後只需
cp "$dir/file" "$dir/file-copy"
. 可以很好地工作,但我對命名空間污染有點偏執……echo dir-path | while read p; do cd "$p"; cp file file-copy; done
. 通過模擬 lambda-calculus stype let-binding with 基本上結合了 subshell-wrapping 和變數定義read
。我很喜歡它,但它有點奇怪,並且涉及很多額外的字元。- 我能想到的任何使用都
sed 's/file/file-copy/'
需要更多的樣板。- 用編輯器*打開文件,然後另存為。*不能很好地適用於非文本文件,而且通常會耗費大量資源。
有沒有更優雅的選擇?理想情況下,
mv
也可以類似地使用。
根據這個問題,您可以使用:
cp /long/path/to/file{,-copy}
這是由
bash
(不確定其他人)完成的外殼擴展,因此它適用於任何命令。