Bash
是否可以命名命令的一部分以便稍後在同一命令中重用它?
如果我想移動一個名為
longfile
from/longpath/
to的文件,/longpath/morepath/
我可以做類似的事情mv (/longpath)/(longfile) $1/morepath/$2
即我可以讓 bash 知道它應該記住輸入的特定部分,以便稍後在同一個輸入中重用它嗎?(在上面的例子中,我使用了一個虛構的記憶命令,它通過括在括號中和一個虛構的重用命令
$
來插入組的內容)
你可以這樣做:
mv /longpath/longfile !#:1:h/morepath/
見https://www.gnu.org/software/bash/manual/bashref.html#History-Interaction
!#
是目前命令:1
是此命令中的第一個參數:h
是“頭”——認為dirname
/morepath/
將其附加到頭部- 並且您正在將文件移動到目錄中,因此它保持相同的基本名稱。
如果要更改“longfile”名稱,例如添加“.txt”副檔名,您可以
mv /longpath/longfile !#:1:h/morepath/!#:1:t.txt
就個人而言,我會用滑鼠進行剪切和粘貼。在實踐中,我從來沒有比
!!
or!$
or複雜得多!!:gs/foo/bar/