Shell ===== 介绍 ---- Bash Shell (后面简称 Shell )是 Unix shell 的一种,也是大多 Linux 发行版自带的默认 Shell 。熟记一些快捷键,可以大大地提高我们日常在 Linux 命令行操作的效率。 安装 ---- Bash Shell 是大部分 Linux 发行版的默认 Shell 。一些发行版没有的话可以到 http://ftp.gnu.org/gnu/bash/ 处下载并编译安装。 常用快捷键 ---------- Bash 快捷键其实是 GNU Readline 快捷键。GNU ReadLine 是一个开源的跨平台程序库,只要使用了它的程序,都可以用同一个配置文件配置,而且用同样的方法操作命令行,让你可以方便的编辑命令行。 .. note:: 这里介绍的快捷键是 Bash Shell 里面的快捷键。与其他 Shell (如 Zsh Shell , Fish Shell )的快捷键大部分相同,但并不完全一样。 .. _topics-whatelse: 移动光标 :::::::: - ``ctrl+b``: 前移一个字符(backward) - ``ctrl+f``: 后移一个字符(forward) - ``alt+b``: 前移一个单词 - ``alt+f``: 后移一个单词 - ``ctrl+a``: 移到行首(a 是首字母) - ``ctrl+e``: 移到行尾(end) - ``ctrl+xx``: 在行首和光标当前位置来回转换 这里比较常用的是后面五个快捷键,方便我们来回移动光标来删除,添加,修改我们的命令行。尤其是最后一个 ``ctrl+xx`` 有时我们需要从当前位置移动回行首添加一下命令(比如添加 ``sudo`` 命令获取权限)之后回到之前的光标位置时会用到。 删除字符 :::::::: - ``alt+d``: 删除当前光标到后一个单词的结束的字符 - ``ctrl+w``: 删除当前光标到前一个单词的开始的字符 - ``ctrl+u``: 删除光标到行首的字符 - ``ctrl+k``: 删除光标到行尾的字符 - ``ctrl+h``: 删除光标前一个字符(相当于 backspace) - ``ctrl+d``: 删除光标后一个字符(相当于 delete) 常用的是前四个, ``alt+d`` 和 ``ctrl+w`` 可以帮助我们删除命令行里边的参数, ``ctrl+u`` 和 ``ctrl+k`` 可以一起用达到删除整条命令的效果。 编辑字符 :::::::: - ``ctrl+shift+c``: 复制 - ``ctrl+shift+v``: 粘贴 - ``ctrl+t``: 交换光标处和之前的字符(transposition) - ``alt+t`` : 交换光标处和之前的单词 控制命令 :::::::: - ``ctrl+l``: 清屏 - ``ctrl+s``: 阻止屏幕输出 - ``ctrl+q``: 允许屏幕输出 - ``ctrl+c``: 终止命令 - ``ctrl+z``: 挂起命令 查找历史命令 :::::::::::: - ``ctrl+r``: 搜索历史命令(按Enter执行) - ``ctrl+g``: 从历史搜索模式中退出 - ``ctrl+p``: 查看历史上一条命令(相当于PageUp) - ``ctrl+n``: 查看历史下一条命令(相当于PageDown) - ``alt+.``: 使用上一条命令的最后一个参数 ``ctrl+r`` 可以通过字符来查找历史命令,非常实用。 ``alt+.`` 用于重用上一条命令的最后一个参数。 比如我们创建目录时: mkdir foo + cd ``alt+.`` 。如果要使用上一条命令的全部参数,可以用下面的 ``!*`` Bang(!)命令。 Bang (!) 命令 ------------- Bang(!) 命令是 Shell 下面的历史扩展命令,是 Bash 下 History 库提供的一个将历史命令转换到可执行命令的功能。 - ``!!``: 执行上一条命令 - ``^foo``: 删除上一条命令中的 ``foo`` - ``^foo^bar``: 把上一条命令里的 ``foo`` 替换为 ``bar`` ,并执行 - ``!wget``: 执行最近的以wget开头的命令 - ``!wget:p``: 仅打印最近的以wget开头的命令,不执行 - ``!$``: 使用上一命令令的最后一个参数, 与 ``Alt+.`` 相同 - ``!*``: 使用上一条命令的所有参数 - ``!*:p``: 打印上一条命令是所有参数,也即 ``!*`` 的内容 - ``!-num`` :执行前 ``num`` 条命令,执行上一条命令: ``!-1`` , 执行前5条命令的格式是: ``!-5``