Linux shell常用快捷键
在linux使用shell时常常会遇到一些使用场景需要大量重复敲击按键,带来了一些麻烦,所以学会一些快捷键是
必备的,但是有些快捷键几乎没用,也没用记忆的必要
首先声明一点,重点是记住快捷键的功能,而不是快捷键的按键绑定,因为对于不同的终端模拟程序,这些功能基本都是
提供的,但是按键绑定可能有所不同(说的就是PowerShell),另外有些终端是支持修改按键绑定的
以下的快捷键按键绑定都是标准的linux shell按键绑定,在Konsole上测试通过
实用的快捷键
快速跳转到命令的开头
Ctrl+A,这个命令会将光标移动到命令的开头,在执行某些命令发现权限不够时,可以用这个命令快速跳转到开头
然后添加sudo
发送EOF
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即可,进程的各种资源都会被保留,但是不会分到时间片,
也就是不会被执行,可以通过fg
或bg
命令重新运行,fg
即foreground,让暂停的后台进程在前台执行
bg
即background,让暂停的后台进程在后台运行,还可以通过jobs -l
寻找被暂停的进程,如果不需要这个
进程了,可以用kill <进程号>
杀死进程
控制屏幕输出
如果屏幕输出太多,可以用Ctrl+S阻止屏幕输出,要恢复屏幕输出用Ctrl+Q
历史回溯
按下Ctrl+R后会进入一个历史命令回溯的程序,可以用这个功能快速搜索已经输入过的命令 按上下箭头也可以逐条回溯历史命令
清空屏幕
Ctrl+L可以清空屏幕上的输出,这个快捷键功能同clear
命令
然而clear
命令实际上是一个可执行,所以它清空输出的功能是如何实现的,现在成了未知
用处不大的快捷键
快速删除
当输入一个很长的命令,突然发现需要先执行另外一个命令,这时有两个做法
- Ctrl+C打断
- Ctrl+U删除光标左边的全部字符串
Ctrl+U虽然可以根据光标删除,但是实际使用场景常常可以被Ctrl+C替代
移动光标的高级方式
除了Ctrl+A,这些移动光标的方式基本都不常用
- Ctrl+A 移动到命令行首
- Ctrl+E 移动到命令行尾(end)
- Ctrl+F 前移一个字符(forward)
- Ctrl+B 后移一个字符(backward)
…
还有很多这种命令,就不一一列举了 实际上Ctrl+左右箭头就能实现在词间移动,而且更加直观
关于复制
因为Ctrl+C被拿去打断进程了,复制粘贴就变成了Ctrl+Shift+C和Ctrl+Shift+V,这确实带来了麻烦!
但是考虑到这是linux的默认设置,如果修改了这个配置,在新机器上可能会不习惯,最终还是慢慢适应了
但是这个快捷键在跨应用复制的时候会带来不少困扰!(尤其是Ctrl+Shift+C在edge上也许表示复制元素,一旦按下
这个按键就会打开浏览器开发者工具)