Shell

介绍

Bash Shell (后面简称 Shell )是 Unix shell 的一种,也是大多 Linux 发行版自带的默认 Shell 。熟记一些快捷键,可以大大地提高我们日常在 Linux 命令行操作的效率。

安装

Bash Shell 是大部分 Linux 发行版的默认 Shell 。一些发行版没有的话可以到 http://ftp.gnu.org/gnu/bash/ 处下载并编译安装。

常用快捷键

Bash 快捷键其实是 GNU Readline 快捷键。GNU ReadLine 是一个开源的跨平台程序库,只要使用了它的程序,都可以用同一个配置文件配置,而且用同样的方法操作命令行,让你可以方便的编辑命令行。

注解

这里介绍的快捷键是 Bash Shell 里面的快捷键。与其他 Shell (如 Zsh Shell , Fish Shell )的快捷键大部分相同,但并不完全一样。

移动光标

  • 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+dctrl+w 可以帮助我们删除命令行里边的参数, ctrl+uctrl+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