Linux shell常用快捷键

在linux使用shell时常常会遇到一些使用场景需要大量重复敲击按键,带来了一些麻烦,所以学会一些快捷键是 必备的,但是有些快捷键几乎没用,也没用记忆的必要
首先声明一点,重点是记住快捷键的功能,而不是快捷键的按键绑定,因为对于不同的终端模拟程序,这些功能基本都是 提供的,但是按键绑定可能有所不同(说的就是PowerShell),另外有些终端是支持修改按键绑定的
以下的快捷键按键绑定都是标准的linux shell按键绑定,在Konsole上测试通过

Ctrl+A,这个命令会将光标移动到命令的开头,在执行某些命令发现权限不够时,可以用这个命令快速跳转到开头 然后添加sudo

Ctrl+D即发送EOF EOF是End Of File,它表示文件的结束,当一个程序读取标准输入时,它相当于是在读取一个 叫做标准输入的文件, EOF告诉程序,文件已经读取完了,在任何读取输入的程序中发送EOF都能直接退出,例如python的终端交互式界面, ssh远程登录的环境,甚至可以用这个关闭终端模拟器
实际上Ctrl+D这个功能准确来说应该不是快捷键,因为几乎没有其他操作能完成一样的功能
(补上一点,有些IDE在debug时可能会屏蔽掉一些按键绑定,可以尝试Ctrl+Shift+D)

Ctrl+C,基本是每一个初学者第一个学会的快捷键

如果执行一个命令发现要花非常多的时间,想暂停先去干别的事情,直接Ctrl+C会直接发送SIGKILL信号,强制 进程结束,还有一种做法是暂停前台程序,按下Ctrl+Z即可,进程的各种资源都会被保留,但是不会分到时间片, 也就是不会被执行,可以通过fgbg命令重新运行,fg即foreground,让暂停的后台进程在前台执行 bg即background,让暂停的后台进程在后台运行,还可以通过jobs -l寻找被暂停的进程,如果不需要这个 进程了,可以用kill <进程号>杀死进程

如果屏幕输出太多,可以用Ctrl+S阻止屏幕输出,要恢复屏幕输出用Ctrl+Q

按下Ctrl+R后会进入一个历史命令回溯的程序,可以用这个功能快速搜索已经输入过的命令 按上下箭头也可以逐条回溯历史命令

Ctrl+L可以清空屏幕上的输出,这个快捷键功能同clear命令
然而clear命令实际上是一个可执行,所以它清空输出的功能是如何实现的,现在成了未知

当输入一个很长的命令,突然发现需要先执行另外一个命令,这时有两个做法

  1. Ctrl+C打断
  2. Ctrl+U删除光标左边的全部字符串
    Ctrl+U虽然可以根据光标删除,但是实际使用场景常常可以被Ctrl+C替代

除了Ctrl+A,这些移动光标的方式基本都不常用

  1. Ctrl+A 移动到命令行首
  2. Ctrl+E 移动到命令行尾(end)
  3. Ctrl+F 前移一个字符(forward)
  4. Ctrl+B 后移一个字符(backward)

    还有很多这种命令,就不一一列举了 实际上Ctrl+左右箭头就能实现在词间移动,而且更加直观

因为Ctrl+C被拿去打断进程了,复制粘贴就变成了Ctrl+Shift+C和Ctrl+Shift+V,这确实带来了麻烦!
但是考虑到这是linux的默认设置,如果修改了这个配置,在新机器上可能会不习惯,最终还是慢慢适应了 但是这个快捷键在跨应用复制的时候会带来不少困扰!(尤其是Ctrl+Shift+C在edge上也许表示复制元素,一旦按下 这个按键就会打开浏览器开发者工具)