首页 > 代码库 > Unix-like命令高效操作(1)-快捷键

Unix-like命令高效操作(1)-快捷键

借公司大牛的技术分享ppt,组织几篇关于unix-like命令高效操作的文章!


一篇非常注重实践的技术文,主要关于如何在unix-like下实现高效快速的命令行操作, 希望大家能从中真正体悟出命令行与图形化操作的效率差异! 关于命令行图形化的话题,网上也有很多的讨论,各执一词,不论谁对说错,主要还是场景不同, 而且有些快捷键也是特定历史时期下的产物。


下面先梳理一下大纲,看看涉及到的内容,命令行快捷键能为我们做到什么?

  • 快捷移动, 包括单字符移动, 单词移动, 行首行尾移动等;

  • 快捷删除, 包括字符删除, 单词删除, 行删除等;

  • 快捷输入, 包括快捷粘贴, 历史查询, 大小写切换等;

  • 还有其他一些快捷操作, 如清屏, shell冻结, 解冻;

  • 还有更强大的功能, 类vi模式的操作;

为了更好的体验命令快捷键带来的便捷快感, 实践是第一位的. 

所以, 首先需要新建一些用于测试的文件:

 $ mkdir test

 $ cd test

 $ mkdir {a,b,c,exam}_fast_operation

 $ mkdir exam_fast_input afile bfile


一, 快捷移动

  快捷移动, 包括单字符移动, 单词移动, 行首行尾移动等.

  1. 单字符移动

    ctrl+b 向左移动一个字符, back

    ctrl+f  向右移动一个字符, front

    字符移动快捷键, 对比方向键, 可能大家认为多此一举. 但是, 在特定历史时期,  键盘是不存在专门的方向键的, 如果大家熟悉vi, 其中的移动方向键就是由HJKL替代的;

    实例: 无

  2. 单词移动

    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 同理;

  3. 行首行尾移动

    ctrl+a 快速移动到行首, ahead

    ctrl+e 快速移动到行尾, end

    行首行尾跳转功能我个人最常用, 快速定位行首行尾, 容易使用;

    实例:

    非root用户修改/etc/hosts文件

    $ vim /etc/hosts

    此时对文件进行修改保存; 系统提示"readonly file"; 此时可通过ctrl+a快速移动到行尾, 加入sudo

    $ sudo vim /etc/hosts

    ctrl+e 同理;

  4. 行首移动与还原

    ctrl+x+x 快速移动到行首, 在此执行此快键键, 还原到之前位置;

    实例:

    非root用户修改/etc/hosts

    $ vim /etc/ho

    当输入到如上情况时, 发现修改hosts文件需要使用sudo权限, 此时ctrl+x+x 到行首添加sudo,  然后ctrl+x+x位置还原继续执行, 对于也可以使用ctr+a和ctrl+e的组合来实现;


二, 快捷删除

快捷删除, 包括字符删除, 单词删除, 行删除等;

  1. 字符删除

    ctrl+h 提示符向前删除单个字符

    ctrl+d 提示符向后删除单个字符

    总的来说, ctrl+h与backspace基本相同, ctrl+d与delete基本相同;

    实例: 无

  2. 单词删除

    ctrl+w 删除提示符之前的单词内容;

    alt+d   删除提示符之后的单词内容;

    个人觉得这个功能挺好, 就是快捷键太过别扭;

    实例:

    查找目录c_fast_operation目录下面的内容

    $ ls exam_fast_operation

    可以发现上面内容输入有误, 此时两次执行alt+b, 再执行ctrl+w, 输入a_可以实现快速内容修改;

  3. 行内删除

    ctrl+u 删除提示符之前的行内所有内容;

    ctrl+k 删除提示符之后的行内所有内容;

    快捷键好用, 操作方便;

    实例:

    查看exam_fast_input下面的文件夹详情信息

    $ ls exam_fast_operation

    错误输入, 此时执行alt+b, 然后执行ctrl+k, 快速删除operation, 输入input;

    ctrl+u 同理;

  4. 撤销当前行编辑

    ctrl+c 撤销当前行编辑, 类似于整行删除

    实例:

    $ ls exam_fast_operation

    比如此时正在查询ls exam_fast_operation, 但是发现自己走神了, 原来我要执行的压根是另外一个命令, 执行ctrl+c, 另起一行, 开始新的命令编辑; 如果此时提示符是在命令结尾处, 可以使用ctrl+u实现整行快速删除, 而不是不断的backspace;

  5. 撤销上一次操作

    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两个单词的操作, 然后执行命令;

三, 快捷输入

快捷输入, 包括快捷粘贴, 历史查询, 大小写切换等;

  1. 快捷粘贴

    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;

  2. 命令历史查询

    ctrl+r 查询命令历史, 最近包含该字符的命令;

    实例:

    刚刚执行过cp -rf exam_fast_operation command操作, 此时ctrl+r, 然后输入需要查询的命令历史, 如exam_fast, 此时就会把最近的包含exam_fast的命令查询出来;

    关于更多历史命令的内容, 之后的文章中,有更多系统的介绍;

  3. 大小写切换

    alt+u 提示符之后的单词切换为大写;

    alt+l  提示符之后的单词切换为小写;

    alt+c 提示符之后的单词首字母大写;

    实例: 无

  4. 单词快速交换

    alt+t 提示符所在位置单词与前一个单词位置互换;

    实例:

    $ mv cfile afile

    命令原意为afile重名为cfile, 发现两者位置错误, 执行alt+t, 实现位置快速互换;

  5. 快速粘贴上次命令参数

    esc+. 快速上次命令的最后一个参数

    实例:

    $ ls command

    $ mv esc+. fast_operation

    如上所示, 首先执行ls command, 下一行命令在需要引用command的时候, 输入esc+. ;

    其实不至于引用最后一个参数, 上次命令中的任意参数都可以应用, 可以自己查询资料;

  6. 添加特殊字符

    ctrl+v 输入此快捷键之后, 可以输入特殊字符, 如tab, 默认tab为自动补全, 非tab字符;

  7. 滚动历史命令

    ctrl+p 向上滚动历史命令;

    ctrl+n 向下滚动历史命令;


四, 其他

其他一些快捷操作, 如清屏, shell冻结, 解冻等

  1. ctrl+l 快速清屏, 与clear命令效果基本相同;

  2. ctrl+s 锁屏, 效果是输入任何内容都不会修改, 不能进行任何的操作, 有些人第一次遇到命令行被锁会以为是电脑死机等情况;

  3. ctrl+q 退出锁屏, 重新开始输入;

  4. ctrl+o 执行命令, 相等于enter;

  5. ctrl+i  类似tab功能, 自动补全;


五, vi模式

最后简要提一下vi模式, 执行命令set -o vi可进入vi模式, 执行esc便可以使用vi的常用操作. vi模式主要面向的是对vi对比较熟悉的人使用的, 个人感觉自己对vi相对熟悉, 但是在命令行使用vi进行操作, 确会感觉不太灵活. 可能是先入为主, 亦或是命令行本身内容简单的特性不需要vi这样高级的文本编辑特性, 有点杀鸡使用宰牛刀的感觉;


此篇仅仅是关于unix-like操作系统通常的一些快捷键的使用. 关于Unix-like的高效操作还有很多技巧, 如vim的使用, 命令历史记录, 环境变量, 管理的常用命令, sh脚本等等一些列技巧.  希望有机会可以一一总结出来, 与大家分享;


此篇文章采用采用mac作为测试平台, 如发现有些快捷命令不兼容, 请帮忙指正, 谢谢!

Unix-like命令高效操作(1)-快捷键