Bash

是否可以在 bash 中重複尚未執行的字元串的一部分?

  • September 11, 2022

我想知道是否可以在同一行(即連結)上重複部分命令(尚未執行)。

假設我想執行這個命令

mkdir -p /some/long/dest/path && rsync -azP /some/long/src/path /some/long/dest/path 

是否可以只輸入類似於

mkdir -p /some/long/dest/path && rsync -azP /some/long/src/path /path/at/x:2

顯然,x:2最後執行的命令數組中的索引,所以我想知道是否有可能擺脫將字元串連結在一起並在目前字元串的 X 位置重新使用命令。

您可以使用行編輯功能來獲取mkdir參數並將其粘貼到行尾。(我使用vi- 樣式的行編輯,因此非常簡單: ESC 進入編輯模式,0WW跳轉到mkdir路徑,yW拉出路徑,然後p粘貼它。我假設預設emacs- 樣式的行編輯中有一個等價物。 )

或者,

p=/some/long/dest/path; mkdir -p "$p" && rsync -azP /some/long/src/path/ "$p"

或者,由於這是一個互動式會話,請通過檢查mkdir查看結果:

mkdir -p /some/long/dest/path
rsync -azP /some/long/src/path/ !$

如果您以前沒有遇到過,它是最後一個命令的!$最後一個參數 ( ) 的替換。$它在man bash(除其他外)。試試這個,看看它是如何進行的:

date --date tomorrow
echo !$
date --date !$

項目從零開始引用,依此echo !!:0類推。

我知道無法使用此類-style 運算符在目前命令行中引用參數。history

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