bash

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

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

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

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

    http://linuxtoy.org/xxx.mp3  

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

    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 控件的程序中,您都可以使用它们。例如 bashlftpgdb 等程序;同时,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-a Ahead \C-e End
字符 \C-f Forward \C-b Backward
单词 \M-f \M-b
命令 \C-n Next \C-p Previous
删除
\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 的软件同时生效)

set editing-mode vi    

找到这一行:

      $if mode=emacs    

在它的下面添加如下内容

"\C-o": menu-complete

###这两行不是必须的,视情况而定###
"\C-p": non-incremental-reverse-search-history
"\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