命令行的鍵盤快捷鍵是什麼?
我說的是您在命令行/終端中使用的鍵盤快捷鍵。
範例:
Ctrl
+c
殺死程序,Ctrl
+d
註銷,Ctrl
+z
將程序發送到後台……等等。我測試了一些,發現它們既不是終端(即
gnome-terminal
, )特定的xterm
,konsole
也不是外殼(即bash
,zsh
)特定的,它們甚至在tty
s.所以,我想知道:
- 誰提供這些快捷方式?
- 如何列出和修改/定義它們?
核心的終端驅動程序 (
termios
) 解釋可以鍵入的特殊鍵,以向程序發送信號、發送文件結尾、擦除字元等。這是基本的 Unix 核心功能,在大多數 Unix 和 Linux 實現上非常相似。該
stty
命令顯示或設置termios
終端線驅動程序的特殊字元以及其他參數。呼叫
stty -a
以查看特殊字元和其他“終端行設置”的目前值。在以下範例中,您可以看到intr
isCtrl
+C
、eof
isCtrl
+D
、susp
isCtrl
+Z
。(我刪除了其他輸出以僅顯示特殊字元設置):
stty -a
GNU/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 -a
FreeBSD 上的特殊字元: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
+更改C
為Ctrl
+E
呼叫stty
如下(^E
實際上是兩個字元,抑揚符 (^
) 後跟字母E
):stty intr '^E'
有關詳細資訊,請參閱 和 的手冊
stty
頁termios
。在 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 – 列印出**!***將替代的內容