Bash
如何在一個命令中將文件複製到目標文件夾並 cd 到目標文件夾
為了解釋我的問題,這是我做事的愚蠢方式:
cp fileFromMyFriend.txt ~/my_first_subfolder/my_second_subfolder/more_subfolders cd ~/my_first_subfolder/my_second_subfolder/more_subfolders
將這兩行合二為一的捷徑是什麼?我不是在尋找連接符號,例如 & 或 ;
相反,我試圖避免重新輸入我很長的文件夾路徑。
(我已經瀏覽了 cp 手冊頁,並在來到這里之前用不同的措辭搜尋了這個問題)
我只回答你的這個問題:
Rather I'm trying to avoid retyping my very long folder path.
如果這就是你想要做的,你可以這樣做:
cp fileFromMyFriend.txt ~/my_first_subfolder/my_second_subfolder/more_subfolders cd !$
如果這是用於互動式使用:鍵入並正常執行第一個命令。然後鍵入
cd
Space
M-.
(您可以鍵入M-.
asEsc
.
或 asAlt
+.
)。鍵盤快捷鍵M-.
(yank-last-arg
) 插入前一個命令的最後一個單詞。如果這是用於腳本:將目錄名稱放入變數中。使用變數時不要忘記雙引號。
target_dir=~/my_first_subfolder/my_second_subfolder/more_subfolders cp fileFromMyFriend.txt "$target_dir" cd "$target_dir"
如果您發現您經常使用相同的命令序列,請定義一個函式。下面的 bash 函式呼叫
cp
並將最後一個參數視為要更改到的目錄。如果最後一個參數不是目錄或目錄的符號連結,它會更改為包含最後一個參數的目錄。這適用於大多數使用方式cp
,但不適-t
用於 GNU 選項cp
。cp_cd () { cp "$@" if [ -d "${!#}/." ]; then cd -- "${!#}" else cd -- "$(dirname -- "${!#}")" fi }