第八章 高级键盘技巧
第八章 高级键盘技巧
前言
- UNIX 被称为它是为喜欢敲键盘的人设计的系统。当然,UNIX 中存在命令行的这一事实充分证明了一点。
- 用户使用命令行时往往不喜欢敲入太多字,所以命令行中存在类似 cp、ls、mv 和 rm 的短命令。
- 事实上,省事 (即用最少的击键次数执行最多的任务) 是命令行最希望达到的目标之一。
- 命令行的另一个目标是,用户在执行任务时手指无需离开键盘,不使用鼠标。
- 我们将使用到以下命令:
- clear: 清屏
- history: 显示历史列表的记录
编辑命令行
- 基本介绍
- bash 使用了一个名为 Readline 的库 (供不同的应用程序共享使用的线程集合) 来实现命令行的编辑。
- 光标移动
组合键 | 作用 |
---|---|
Ctrl-A | 移动光标到行首 |
Ctrl-E | 移动光标到行尾 |
Ctrl-F | 光标向前移动一个字符;和右箭头键作用一样 |
Ctrl-B | 光标向前移动一个字符;和左箭头键作用一样 |
Alt-F | 光标向前移动一个字 |
Alt-B | 光标向后移动一个字 |
Ctrl-l | 清屏并把光标移到左上角;clear 命令可以完成相同工作 |
- 修改文本
组合键 | 作用 |
---|---|
Ctrl-D | 删除光标处的字符 |
Ctrl-T | 使光标处的字符和它前面的字符对调位置 |
Alt-T | 使光标处的字符和它前面的字对调位置 |
Alt-L | 把光标到字尾的字符换成小写字母形式 |
Alt-U | 把光标到字尾的字符换成大写字母形式 |
- 剪切和粘贴文本
组合键 | 作用 |
---|---|
Ctrl+K | 剪切从光标到行尾的文本 |
Ctrl+U | 剪切从光标到行尾的文本 |
Alt-D | 剪切从光标到当前词尾的文本 |
Alt-Backspace | 剪切从光标到词头的文本。如果光标在一个单词,则剪切前一个单词 |
Ctrl-Y | 把 kill-ring 缓冲区的文本粘贴到光标的位置 |
自动补齐功能
- 基本介绍
- shell 的一种称为自动补齐的机制为用户提供了很大的帮助。在输入命令时,按 Tab 键将触发自动补齐功能。
- 假设用户目录如下:
1
2
3[me@linuxbox ~]$ ls
Desktop ls-output.txt Pictures Templates Videos
Documents Music Public - 输入如下命令,但是不要按 Enter 键。
1
[me@linuxbox ~]$ ls l
- 此时按 Tab 键:
1
[me@linuxbox ~]$ ls ls-output.txt
- 再看另一个例子,同样也不要按 Enter 键。
1
[me@linuxbox ~]$ ls D
- 按下 Tab 键:
1
[me@linuxbox ~]$ ls D
- 没有自动补齐–只有哔哔声。这是因为字母 D 和目录一个以上的名称匹配。要让自动补齐功能生效,要保证输入的内容不模棱两可,即必须是确定性的。
- 如果我们继续输入:
1
[me@linuxbox ~]$ ls Do
- 此时按下 Tab 键:
1
[me@Linuxbox ~]$ ls Documents
- 自动补齐功能这次生效了。
- 自动补齐也可以针对变量 (如果单词是以 $ 开头) 、用户名 (如果单词以 ~ 开头) 、命令 (如果单词是命令行的第一个单词) 和主机名 (如果单词以 @ 开头) 起作用。
- 主机名的自动补齐只对 /etc/hosts 目录下的主机名生效。
- 自动补全命令
组合键 | 作用 |
---|---|
Alt-$ | 显示所有可能的自动补全列表。在大多数系统中,可通过按两次 Tab 键实现,而且也会更容易一些 |
Alt-* | 插入所有可能的匹配项。当需要用到一个以上的匹配项时候,将比较有用 |
使用历史命令
- 基本介绍
- 第一章我们已经提到,bash 会保存使用过命令的历史记录。这些命令的历史记录列表保存在用户主目录的 .bash_history 文件中。
- 这些历史记录非常有用,可以大大减少用户敲打键盘的次数,特别是和命令行编辑结合使用的时候。
- 搜索历史命令
- 任何情况下,我们都可以通过如下命令查看历史记录内容列表。
1
[me@Linuxbox ~]$ history | less
- bash 默认会保存用户最近使用过的 500 个命令。其中,500 是个默认值,关于如何改变这个默认值在第十一章介绍。
- 假设我们想找到用来列出 /usr/bin 目录下内容的命令,我们可以这样做:
1
[me@Linuxbox ~]$ history | grep /usr/bin
- 假设得到的搜索结果中有一行包含如下有趣的命令。
1
88 ls -l /usr/bin > ls-output.txt
- 数字 88 表示这个命令行在历史记录列表中所处的行号,我们可以通过使用名为历史记录扩展 (history expansion) 的扩展类型来立即使用它。
- 为了使用我们发现的命令行,可以如下操作:
1
[me@Linuxbox ~]$ !88
- bash 将把 !88 扩展为历史列表中的 88 行的内容。
- bash 也支持以递增方式搜索历史记录。也就是说,当搜索历史记录时,随着输入字符数的增加,bash 会相应地改变搜索范围。
- 按下 Ctrl-R 键,接着输入你要查找的内容时,按 Enter 键表示执行此命令,而按 Ctrl-J 将把搜索到的内容从历史记录列表中复制到当前命令行。当要查找下一个匹配项时 (即向前搜索历史记录) ,再次按下 Ctrl-R 键。
- 请看下面例子
1
[me@Linuxbox ~]$
- 首先按下 Ctrl-R
1
(reverse-i-search) '':
- 提示符发生改变,提示正在进行逆向递增式搜索。称为逆向是因为查的是从现在到过去的某个时间之间的操作。
- 接下来,输入要查找的内容,这个例子中是查找 /usr/bin 。
1
(reverse-i-search) '/usr/bin': ls -l /usr/bin > ls-output.txt
- 很快搜索操作返回了结果。此时我们可按 Enter 键执行搜索结果,也可按下 Ctrl-J 把搜索结果复制到当前命令行以便做进一步的编辑。
- 假定按下 Ctrl-J ,把搜索结果复制到当前命令行。
1
[me@Linuxbox ~]$ ls -l /usr/bin > ls-output.txt
- shell 将实时响应,命令行将被加载,准备运行。
- 历史记录命令
组合键 | 作用 |
---|---|
Ctrl-p | 移动到前一条历史记录。相当于向上箭头键 |
Ctrl-N | 移动到后一条历史记录。相当于向下箭头键 |
Alt-< | 移动到历史记录列表的开始处 |
Alt-> | 移动到历史记录列表的结尾处。即当前命令行 |
Ctrl-R | 逆向递增地搜索。从当前命令行向前递增搜索 |
Alt-P | 逆向非递增地搜索。按下这个组合键,接着输入待搜索的字符串,在按 Enter 键后,搜索才真正执行 |
Alt-N | 向前非递增地搜索 |
Ctrl-O | 执行历史记录列表中的当前项,执行完跳到下一项。若要把历史记录中的一系列命令重新执行一遍,使用该组合键将很方便 |
- 历史记录扩展命令
序列 | 行为 |
---|---|
!! | 重复最后一个执行的命令。按向上箭头再按 Enter 键也可以实现相同的功能,而且操作更简单 |
!number | 重复历史记录中第 number 行的命令 |
!string | 重复最近的以 string 开头的历史记录 |
!?string | 重复最近的包含 string 的历史记录 |
参考文章
- 转载:Linux 命令行大全
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
TwikooGitalk