Bash

將文件複製到與源相同的路徑而不更改目錄

  • August 8, 2022

假設我在某個目錄(例如 home)下有這樣的路徑:~/mydir/subdir/file1,並且我想製作file1的副本:

我們可以從主目錄執行此操作:

cp ~/mydir/subdir/file1 ~/mydir/subdir/file2

是否有一個快捷方式表示“在與源相同的路徑中”,所以我不必mydir/subdir再次重複該部分,就像.目前目錄一樣?或者另一種達到相同結果的方法?

我知道我可以cd ~/mydir/subdir先,但我正在尋找一種可以讓我留在同一個目錄中的單行解決方案。一種選擇是使用變數,但我希望在輸入大量命令時有一種更優雅的方式。

看了看並在man cp網上搜尋,但找不到這樣的選擇。如果答案是肯定的“不”,那也沒關係,只是想我會檢查一下其他人是否使用了節省時間的技巧。謝謝!

使用bash(1),並假設路徑沒有空格或換行(2),我會使用

cp ~/mydir/subdir1/{file1,file2}

這將通過 bash 擴展為(連同~擴展)

cp ~/mydir/subdir1/file1 ~/mydir/subdir1/file2

一如既往,您可以使用echo

echo cp ~/mydir/subdir1/{file1,file2}

根據評論:

(1)這可能適用於其他外殼,我沒有時間測試它們。

(2)對於“有趣”的名字,要麼使用tab完成(所以bash會放置適當的轉義),或者使用引號(但不是圓括號):

mv ./"some dir"/{"some name","other id"}

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