Bash

如何在 bash 控制台上重複目前輸入的參數?

  • June 3, 2021

我只是在輸入以下內容:

mv foo/bar/poit/zoid/narf.txt

突然意識到,該死的,我必須再次輸入該參數的大部分內容

mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt

即使有tabcompletion,也很痛苦。我知道我可以通過滑鼠選擇文本和中鍵來複製粘貼參數,但這還不夠好。我想留在鍵盤上。

那麼有沒有辦法使用鍵盤複製粘貼該行的目前參數?

如果我提前計劃,我會使用大括號擴展。在這種情況下:

mv foo/bar/poit/zoid/{narf,troz}.txt

這是使用預設readline鍵盤快捷鍵的另一種方法:

  • mv foo/bar/poit/soid/narf.txt: 開始
  • Ctrl- wunix-word-rubout刪除foo/bar/poit/soid/narf.txt
  • Ctrl- y, Space, Ctrl- y: yank, 空格,yank再次得到mv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
  • Meta- backspace, Meta- backspace:backward-kill-word兩次刪除最後一個narf.txt
  • troz.txt: 鍵入不同的尾部

如果您花費大量時間使用bashshell,我建議您定期閱讀預設快捷方式列表,並挑選一些似乎對學習有用並融入您的日常工作的快捷方式。 手冊的第 8 章bash是一個很好的起點。知道捷徑真的可以提高你的效率。

歷史擴展實際上也適用於目前命令,使用事件指示符!#。將它與最後一個參數的詞指示符結合起來 - $- 以獲取您剛剛鍵入的參數。您可以使用所有正常修飾符,因此,例如,如果您正在重命名遠處目錄中的文件,您只需鍵入:

mv path/you/do/not/want/to/type/twice/oldname !#$:h/newname

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