Bash
是否可以在 bash 中重複尚未執行的字元串的一部分?
我想知道是否可以在同一行(即連結)上重複部分命令(尚未執行)。
假設我想執行這個命令
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