简书不维护了,欢迎关注我的知乎:波罗学的个人主页
一篇非常注重实践的技术文,主要关于如何在linux下实现高效快速的命令行操作, 希望大家能从中真正体悟出命令行与图形化操作的效率差异! 关于命令行与图形化的话题,网上也有很多的讨论,各执一词,不论谁对说错,主要还是场景不同, 而且有些快捷键也是特定历史时期下的产物。
下面先梳理一下大纲,看看涉及到的内容,命令行快捷键能为我们做到什么?
快捷移动, 包括单字符移动, 单词移动, 行首行尾移动等;
- 快捷删除, 包括字符删除, 单词删除, 行删除等;
- 快捷输入, 包括快捷粘贴, 历史查询, 大小写切换等;
- 还有其他一些快捷操作, 如清屏, shell冻结, 解冻;
- 还有更强大的功能, 类vi模式的操作;
为了更好的体验命令快捷键带来的便捷快感, 实践是第一位的.
所以, 首先需要新建一些用于测试的文件:
cd test
mkdir exam_fast_input afile bfile
一 快捷移动
快捷移动, 包括单字符移动, 单词移动, 行首行尾移动等.
单字符移动
ctrl+b 向左移动一个字符, back
ctrl+f 向右移动一个字符, front
字符移动快捷键, 对比方向键, 可能大家认为多此一举. 但是, 在特定历史时期, 键盘是不存在专门的方向键的, 如果大家熟悉vi, 其中的移动方向键就是由HJKL替代的;
实例: 无单词移动
alt+b 提示符向左移动一个单词, back
alt+f 提示符向右移动一个单词, front
注: mac下面使用esc替代alt;
单词移动, 这个功能比较实用, 对于命令较长的情况下, 可以实现快速的定位; 实例:
查看a_fast_operation下的文件夹相关信息, 命令ls -ld a_fast_operation
$ ls b_fast_opertion
此时发现, a_fast_operation错写成了b_fast_operation, 使用快捷键alt+b三次, 快速跳转到b位置, alt+d向后移动一个字符删除进行修改;
alt+f 同理;行首行尾移动
ctrl+a 快速移动到行首, ahead
ctrl+e 快速移动到行尾, end
行首行尾跳转功能我个人最常用, 快速定位行首行尾, 容易使用;
实例:
非root用户修改/etc/hosts文件
sudo vim /etc/hosts
ctrl+e 同理;行首移动与还原
ctrl+x+x 快速移动到行首, 在此执行此快键键, 还原到之前位置;
实例:
非root用户修改/etc/hosts
$ vim /etc/ho
当输入到如上情况时, 发现修改hosts文件需要使用sudo权限, 此时ctrl+x+x 到行首添加sudo, 然后ctrl+x+x位置还原继续执行, 对于也可以使用ctr+a和ctrl+e的组合来实现;
二 快捷删除
快捷删除, 包括字符删除, 单词删除, 行删除等;
字符删除
ctrl+h 提示符向前删除单个字符
ctrl+d 提示符向后删除单个字符
总的来说, ctrl+h与backspace基本相同, ctrl+d与delete基本相同;
实例: 无单词删除
ctrl+w 删除提示符之前的单词内容;
alt+d 删除提示符之后的单词内容;
个人觉得这个功能挺好, 就是快捷键太过别扭;
实例:
查找目录c_fast_operation目录下面的内容
$ ls exam_fast_operation
可以发现上面内容输入有误, 此时两次执行alt+b, 再执行ctrl+w, 输入a_可以实现快速内容修改;行内删除
ctrl+u 删除提示符之前的行内所有内容;
ctrl+k 删除提示符之后的行内所有内容;
快捷键好用, 操作方便;
实例:
查看exam_fast_input下面的文件夹详情信息
$ ls exam_fast_operation
错误输入, 此时执行alt+b, 然后执行ctrl+k, 快速删除operation, 输入input;
ctrl+u 同理;撤销当前行编辑
ctrl+c 撤销当前行编辑, 类似于整行删除
实例:
$ ls exam_fast_operation
比如此时正在查询ls exam_fast_operation, 但是发现自己走神了, 原来我要执行的压根是另外一个命令, 执行ctrl+c, 另起一行, 开始新的命令编辑; 如果此时提示符是在命令结尾处, 可以使用ctrl+u实现整行快速删除, 而不是不断的backspace;撤销上一次操作
ctrl+? 撤销上一次操作, 可类比office word中的ctrl+z操作, 撤销的最长生命周期是一行命令, 切换到下一行撤销无效, 如ctrl+c取消, enter执行等操作;
实例:
$ mv a_fast_operation d_fast_operation
此时你发现你的原意是将b_fast_operation重命名为e_fast_operation, 执行两次ctrl+w删除两个词, 但是其实a_fast_operation也是需要执行的操作, 此时输入两次ctrl+?就可以把前两次的删除d_fast_operation和a_fast_operation两个单词的操作, 然后执行命令;
三, 快捷输入
快捷输入, 包括快捷粘贴, 历史查询, 大小写切换等;
快捷粘贴
ctrl+y 快速粘贴之前删除的内容(通过ctrl+w, ctrl+u, ctrl+k删除可用)
实例:
拷贝文件exam_fast_operation为command
$ cp -rf comand exam_fast_operation
上述命令输入错误, 源文件和目标文件位置颠倒, 三次alt+b向左移动, 执行ctrl+w删除command, ctrl+e移到尾部, 执行ctrl+y粘贴command;命令历史查询
ctrl+r 查询命令历史, 最近包含该字符的命令;
实例:
刚刚执行过cp -rf exam_fast_operation command操作, 此时ctrl+r, 然后输入需要查询的命令历史, 如exam_fast, 此时就会把最近的包含exam_fast的命令查询出来;
关于更多历史命令的内容, 之后的文章中,有更多系统的介绍;大小写切换
alt+u 提示符之后的单词切换为大写;
alt+l 提示符之后的单词切换为小写;
alt+c 提示符之后的单词首字母大写;
实例: 无单词快速交换
alt+t 提示符所在位置单词与前一个单词位置互换;
实例:
$ mv cfile afile
命令原意为afile重名为cfile, 发现两者位置错误, 执行alt+t, 实现位置快速互换;快速粘贴上次命令参数
esc+. 快速上次命令的最后一个参数
实例:
mv esc+. fast_operation
如上所示, 首先执行ls command, 下一行命令在需要引用command的时候, 输入esc+. ;
其实不至于引用最后一个参数, 上次命令中的任意参数都可以应用, 可以自己查询资料;添加特殊字符
ctrl+v 输入此快捷键之后, 可以输入特殊字符, 如tab, 默认tab为自动补全, 非tab字符;滚动历史命令
ctrl+p 向上滚动历史命令;
ctrl+n 向下滚动历史命令;
四, 其他
其他一些快捷操作, 如清屏, shell冻结, 解冻等
- ctrl+l 快速清屏, 与clear命令效果基本相同;
- ctrl+s 锁屏, 效果是输入任何内容都不会修改, 不能进行任何的操作, 有些人第一次遇到命令行被锁会以为是电脑死机等情况;
- ctrl+q 退出锁屏, 重新开始输入;
- ctrl+o 执行命令, 相等于enter;
- ctrl+i 类似tab功能, 自动补全;
五, vi模式
最后简要提一下vi模式, 执行命令set -o vi可进入vi模式, 执行esc便可以使用vi的常用操作. vi模式主要面向的是对vi对比较熟悉的人使用的, 个人感觉自己对vi相对熟悉, 但是在命令行使用vi进行操作, 确会感觉不太灵活. 可能是先入为主, 亦或是命令行本身内容简单的特性不需要vi这样高级的文本编辑特性, 有点杀鸡使用宰牛刀的感觉;
此篇仅仅是关于linux操作系统通常的一些快捷键的使用. 关于linux的高效操作还有很多技巧, 如vim的使用, 命令历史记录, 环境变量, 管理的常用命令, sh脚本等等一些列技巧. 希望有机会可以一一总结出来, 与大家分享;
如发现此篇文章有些快捷命令不兼容, 请帮忙指正, 谢谢!