Bash

是否可以命名命令的一部分以便稍後在同一命令中重用它?

  • March 30, 2016

如果我想移動一個名為longfilefrom /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/

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