bash

好了,现在我们换了一个遥控器,感觉顺手多了。现在来操练一下,下载一首 mp3:

我们使用 wget 这个程序,它非常可靠,完全值得您信赖。

首先找到一个可以下载的地址,复制链接,在终端窗口内点击鼠标中键,把它粘贴进去。

现在终端中大概是这种情形:

  1. http://linuxtoy.org/xxx.mp3

按下 Ctrl+a 组合键,我们发现光标移动到了行首。输入 wget空格

  1. wget http://linuxtoy.org/xxx.mp3

回车后,终端中出现一些信息,不一会儿工夫,mp3 便下载完成。

使用 Ctrl+a 组合键,我们就不需要使用方向键来移动光标,方向键每次只能移动一个字符,没有效率

您还可以使用 Ctrl+f 向前移动光标, Ctrl+b 向后移动光标, Ctrl+e 将光标移动到行末……(键绑定

[注意]注意
Linux 的图形界面中,鼠标中键通常执行“粘贴”的操作,如果您的鼠标没有中键,您可以左右键同时按下。

中止正在运行的程序

如果一个命令持续时间很长,以致于不能够进行其它操作,可以使用 Ctrl+c 来强行中止它。

Ctrl+s

有时您会不小心按下 Ctrl+s 这个组合键,Shell 便被冻结。尝试使用 Ctrl+q 组合键,看能否恢复正常。

键绑定

等等,有必要记这么多快捷键么?都这么复杂!

我们强烈建议您记住,以大幅度的提高操作效率。而且这是 readline 控件的键绑定,在任何使用 readline 控件的程序中,您都可以使用它们。例如 bash、lftp、gdb 等程序;同时,Linux 下倍受追捧的 Emacs 编辑器,也是这种风格的键绑定(其实是 readline 使用了 Emacs风格 的键绑定才对),甚至 FireFox 中,也可以使用类似风格的快捷键!(Linux 下主要有两种风格的键绑定,一种是 Emacs风格,另一种是 Vi风格,我们会在 第 24 章 Vim 编辑器 中介绍)

现在列举一些 ReadLine 的键绑定,您可以自行尝试。(运行 man readline 命令,来查看 ReadLine 手册)

先来了解一些约定:

  • \C-a 表示 Ctrl+a
  • \M-a 表示 Meta+a Meta键 在 PC 中通常为 ALT键

表 14.1. Emacs风格 键绑定

 向前向后
移动
\C-aAhead\C-eEnd
字符\C-fForward\C-bBackward
单词\M-f\M-b
命令\C-nNext\C-pPrevious
删除
\C-u\C-k
字符\C-h\C-d
单词\C-w\M-d
搜索
搜索\C-r (连续使用 C-r 可以查找下一个)
浏览搜索结果\M-n\M-p
其它
粘贴C-y
撤销C—
清空屏幕C-l

自动补全

Tab使用频率最高的功能! 
\C-o遍历补全(未定义)
\M-?列出所有可能选项,相当于按两次 Tab键Alt+Shift+/
\M-#注释掉当前命令,用于将当前命令暂存于历史纪录列表Alt+Shift+3
\M-!补全命令,通常用来补全子命令,例如 sudo 的子命令Alt+Shift+1
\M-~补全用户名Alt+Shift+`
\M-@补全主机名Alt+Shift+2
\M-$补全变量Alt+Shift+4
\M-_补全历史纪录中的纪录Alt+Shift+-
\M-*将所有可能选项放到命令行中Alt+Shift+8

自定义键绑定

通过修改 /etc/inputrc 文件,可以更改键绑定。建议您使用默认的键绑定,以避免不必要的烦恼。当然了,Emacs风格 的键绑定是通用的,随时都有可能用到。

在文件中添加该行,可以将 ReadLine 的键绑定设为 VI风格。(Bash、Lftp 等使用 ReadLine 的软件同时生效)

  1. set editing-mode vi

找到这一行:

  1. $if mode=emacs

在它的下面添加如下内容

  1. "\C-o": menu-complete
  2. ###这两行不是必须的,视情况而定###
  3. "\C-p": non-incremental-reverse-search-history
  4. "\C-n": non-incremental-forward-search-history

重新登录 Shell,您就可以使用 \C-o (Ctrl+o)来遍历补全。假如您的文件名为中文,或者出现乱码时,您可以使用 \M-* 将所有文件名放入命令行,再删除多余的,这真是麻烦极了!简单一点的方法是使用 \C-o 遍历补全,将所有可能的选项轮流放入命令行。

[提示]提示
使用 Vim编辑器, vi /etc/inputrc ,在插入模式下使用 Ctrl+v 组合键。按下 Ctrl+o ,这时编辑区新增一个 ^O 字符,等价于 \C-o