Command-Line

命令行的鍵盤快捷鍵是什麼?

  • February 4, 2020

我說的是您在命令行/終端中使用的鍵盤快捷鍵。

範例:Ctrl+c殺死程序,Ctrl+d註銷,Ctrl+z將程序發送到後台……等等。

我測試了一些,發現它們既不是終端(即gnome-terminal, )特定的xtermkonsole也不是外殼(即bashzsh)特定的,它們甚至在ttys.

所以,我想知道:

  • 誰提供這些快捷方式?
  • 如何列出和修改/定義它們?

核心的終端驅動程序 ( termios) 解釋可以鍵入的特殊鍵,以向程序發送信號、發送文件結尾、擦除字元等。這是基本的 Unix 核心功能,在大多數 Unix 和 Linux 實現上非常相似。

stty命令顯示或設置termios終端線驅動程序的特殊字元以及其他參數。

呼叫stty -a以查看特殊字元和其他“終端行設置”的目前值。在以下範例中,您可以看到intris Ctrl+ Ceofis Ctrl+ Dsuspis Ctrl+ Z。(我刪除了其他輸出以僅顯示特殊字元設置):

stty -aGNU/Linux 上的特殊字元:

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

stty -aFreeBSD 上的特殊字元:

cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
       erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
       min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
       stop = ^S; susp = ^Z; time = 0; werase = ^W;

要更改特殊字元的值,例如,將中斷字元從Ctrl+更改CCtrl+E呼叫stty如下(^E實際上是兩個字元,抑揚符 ( ^) 後跟字母E):

stty intr '^E'

有關詳細資訊,請參閱 和 的手冊sttytermios。在 GNU/Linux 上,您還可以查看tty_ioctl手冊頁。

筆記:

intr鍵(預設情況下Ctrl+ )實際上並沒有殺死程序,但會導致核心向程序組內的所有程序C發送中斷信號( )。SIGINT程序可能會安排擷取或忽略信號,但大多數程序將終止,這是預設行為。

Ctrl+d將您註銷的原因是終端線路驅動程序在 shell 的標準輸入上發送 EOF(文件結尾)。當 shell 在其標準輸入上接收到文件結尾時,shell 退出。

來自http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/

命令編輯快捷鍵

  • Ctrl+ a– 轉到命令行的開頭
  • Ctrl+ e– 轉到命令行末尾
  • Ctrl+ k– 從游標處刪除到命令行末尾
  • Ctrl+ u– 從游標處刪除到命令行開頭
  • Ctrl+ w– 從游標處刪除到單詞的開頭(即向後刪除一個單詞)
  • Ctrl+ y– 將使用刪除快捷方式之一(例如上面的快捷方式)剪切的單詞或文本粘貼到游標後
  • Ctrl+ xx– 在命令行開頭和目前游標位置之間移動(然後再返回)
  • Alt+ b– 向後移動一個單詞(或轉到游標目前所在單詞的開頭)
  • Alt+ f– 向前移動一個單詞(或轉到游標目前所在單詞的末尾)
  • Alt+ d– 從游標處刪除到單詞的結尾(如果游標在單詞的開頭,則刪除整個單詞)
  • Alt+ c– 大寫到從游標開始的單詞的結尾(如果游標在單詞的開頭,則整個單詞)
  • Alt+ u– 從游標到詞尾變為大寫
  • Alt+ l– 從游標到詞尾變為小寫
  • Alt+ t– 將目前單詞與前一個單詞交換
  • Ctrl+ f– 向前移動一個字元
  • Ctrl+ b– 向後移動一個字元
  • Ctrl+ d– 刪除游標下的字元
  • Ctrl+ h– 刪除游標前的字元
  • Ctrl+ t– 將游標下的字元與前一個字元交換

命令呼叫快捷鍵

  • Ctrl+ r– 向後搜尋歷史
  • Ctrl+ g– 退出歷史搜尋模式
  • Ctrl+ p– 歷史中的上一個命令(即,回溯命令歷史)
  • Ctrl+ n– 歷史中的下一個命令(即向前瀏覽命令歷史)
  • Alt+ .– 使用上一條命令的最後一個字

命令控制快捷鍵

  • Ctrl+ l– 清屏
  • Ctrl+ s- 停止輸出到螢幕(用於長時間執行的詳細命令)
  • Ctrl+ q– 允許輸出到螢幕(如果之前使用上面的命令停止)
  • Ctrl+ c– 終止命令
  • Ctrl+ z– 暫停/停止命令

Bash Bang (!) 命令

Bash還有一些使用 ! (bang) 允許您使用bash命令做一些時髦的事情。

  • !!– 執行最後一個命令
  • !blah – 執行以 ‘blah’ 開頭的最新命令(例如 !ls)
  • !blah:p – 列印出**!blah**將執行的命令(也將其添加為命令歷史記錄中的最新命令)
  • !$ – 上一個命令的最後一個單詞(與**Alt + .**相同)
  • !$:p - 列印出**!$**將替代的單詞
  • !* – 除最後一個單詞外的前一個命令(例如,如果您鍵入“ find some_file.txt / ”,那麼**!***將為您提供“ find some_file.txt ”)
  • !*:p – 列印出**!***將替代的內容

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