命令行的键盘快捷键是什么?

Pan*_*dya 12 command-line keyboard-shortcuts terminal tty

我说的是您在命令行/终端中使用的键盘快捷键。

示例:Ctrl+c杀死进程,Ctrl+d注销,Ctrl+z将进程发送到后台......等等。

我测试了一些,发现他们既不是终端(即gnome-terminalxtermkonsole)具体也不壳(即bashzsh)具体的,他们甚至在工作tty秒。

所以,我想知道:

  • 谁提供这些快捷方式?
  • 如何列出和修改/定义它们?

小智 19

来自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 – 打印出!*将替代的内容


Rob*_*rtL 12

内核的终端驱动程序 ( termios) 解释可以键入的特殊键,以便​​向进程发送信号、发送文件结尾、擦除字符等。这是基本的 Unix 内核功能,与大多数 Unix 和 Linux 实现非常相似。

stty命令显示或设置termios特殊字符以及终端线路驱动程序的其他参数。

调用stty -a以查看特殊字符和其他“终端线路设置”的当前值。在以下示例中,您可以看到intrCtrl+ CeofCtrl+ DsuspCtrl+ 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;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

要更改特殊字符的值,例如,将中断字符从Ctrl+更改CCtrl+ Einvokestty像这样(^E字面意思是两个字符,抑扬符 ( ^) 后跟字母E):

stty intr '^E'
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请参阅手册页sttytermios。在 GNU/Linux 上,您还可以查看tty_ioctl手册页。

笔记:

intr键(Ctrl+C默认情况下),实际上并没有杀死进程,但导致内核发出中断信号(SIGINT进程组内)的所有进程。进程可能会安排捕获或忽略信号,但大多数进程将终止,这是默认行为。

Ctrl+d将您注销的原因是因为终端线路驱动程序在 shell 的标准输入上发送 EOF(文件结尾)。当 shell 在其标准输入上接收到文件结尾时退出。