Cp

如何最容易地在其原始目錄中復製文件?

  • December 14, 2013

我想做的基本上是

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 基本上結合了 subshel​​l-wrapping 和變數定義read。我很喜歡它,但它有點奇怪,並且涉及很多額外的字元。
  • 我能想到的任何使用都sed 's/file/file-copy/'需要更多的樣板。
  • 用編輯器*打開文件,然後另存為。*不能很好地適用於非文本文件,而且通常會耗費大量資源。

有沒有更優雅的選擇?理想情況下,mv也可以類似地使用。

根據這個問題,您可以使用:

cp /long/path/to/file{,-copy}

這是由bash(不確定其他人)完成的外殼擴展,因此它適用於任何命令。

引用自:https://unix.stackexchange.com/questions/105197