Warning:下面一些按键组合(尤其使用 Alt 键的组合),可能会被 GUI 拦截来触发其它的功能。但是当你使用虚拟控制台时,所有的按键组合都应该正确地工作。
移动光标
下表列出了移动光标所使用的按键:
光标移动命令
按键 | 说明 |
---|---|
Ctr+a | (ahead)移动光标到行首 |
Ctr+e | (end)移动光标到行尾 |
Ctr+f | (forward)光标前移一个字符;和右箭头作用一样。 |
Ctr+b | (backward)光标后移一个字符;和左箭头作用一样 |
Ctrl+l | 清空屏幕,移动光标到左上角。clear 命令完成同样的工作 |
Alt+f | 光标前移一个字 |
Alt+b | 光标后移一个字 |
修改文本
下表列出了键盘命令,这些命令用来在命令行中编辑字符:
文本编辑命令
按键 | 说明 |
---|---|
Ctrl-d | (delete)删除光标位置的字符 |
Ctrl-t | 光标位置的字符和光标前面的字符互换位置 |
Alt-t | 光标位置的字和其前面的字互换位置 |
Alt-l | 把从光标位置到字尾的字符转换成小写字母 | Alt-u | 把从光标位置到字尾的字符转换成大写字母 |
剪切和粘贴文本
下表列出了剪切和粘贴命令:
剪切和粘贴命令
按键 | 说明 |
---|---|
Ctr+k | 剪切从光标位置到行尾的文本 |
Ctr+u | 剪切(删除)从光标位置到行首的文本 |
Ctr+h | 删除光标前的字符 |
Alt-d | 剪切从光标位置到词尾的文本 |
Alt-Backspace | 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词 |
Ctrl-y | 把剪切环中的文本粘贴到光标位置 |
其他快捷键
按键 | 说明 |
---|---|
Ctrl-c | 终止正在运行的程序。 |
Ctrl-z | 停止进程,并放入后台 |
crtl+s | 停止屏幕输出 |
crtl+Q | 恢复屏幕输出 |
crtl+l | 清屏 |
crtl+D | 标准输入结束 |
crtl+shift+N | 新建终端窗口 |
alt+tab | 切换当前的运行程序 |
Ctrl+Alt+Fn | f1-f6为虚拟终端,f7回到图形界面 |
自动补全
shell 能帮助你的另一种方式是通过一种叫做自动补全的机制。当你敲入一个命令时, 按下 tab 键,自动补全就会发生。1
2lengyue@ubuntu:~$ ls
Desktop Documents Pictures Music Videos
试着输入下面的命令,但不要按下 Enter 键:1
lengyue@ubuntu:~$ ls D
按下 tab 键:1
lengyue@ubuntu:~$ ls D
没有补全,只是嘟嘟响。因为”D”不止匹配目录中的一个条目,包含“D”的有 Desktop
、Documents
。为了自动补全执行成功, 你给它的”线索”必须不模棱两可。如果我们继续输入:1
lengyue@ubuntu:~$ ls Do
然后按下tab:1
lengyue@ubuntu:~$ ls Documents
自动补全成功了。
这个实例展示了路径名自动补全,这是最常用的形式。自动补全也能对变量起作用(如果字的开头是一个”$”),用户名字(单词以”~”开始),命令(如果单词是一行的第一个单词), 和主机名(如果单词的开头是”@”)。主机名自动补全只对包含在文件/etc/hosts 中的主机名有效。
有一系列的控制和元键序列与自动补全相关联:
自动补全命令
按键 | 说明 |
---|---|
Alt-? | 显示可能的自动补全列表。在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些 |
Alt-\* | 插入所有可能的自动补全。当你想要使用多个可能的匹配项时,这个很有帮助 |
可编程自动补全
目前的 bash 版本有一个叫做可编程自动补全工具。可编程自动补全允许你(更可能是,你的发行版提供商)来加入额外的自动补全规则。通常需要加入对特定应用程序的支持,来完成这个任务。
例如,有可能为一个命令的选项列表,或者一个应用程序支持的特殊文件类型加入自动补全。默认情况下,Ubuntu 已经定义了一个相当大的规则集合。可编程自动补全是由 shell 函数实现的,shell 函数是一种小巧的 shell 脚本,我们会在后面的章节中讨论到。如果你感到好奇,试一下:1
lengyue@ubuntu:~$ set | less
查看一下是否可以正常输出,如果你能找到它们的话。默认情况下,并不是所有的发行版都包括它们。
Tips:只需输入文件或目录名的前几个字符,然后按TAB键,如无相重的,完整的文件名立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字。
利用历史命令
bash 维护着一个已经执行过的命令的历史列表。这个命令列表被保存在你家目录下,一个叫做 .bash_history 的文件里。这个 history 工具是个有用资源,因为它可以减少你敲键盘的次数,尤其当和命令行编辑联系起来时。
搜索历史命令
在任何时候,我们都可以浏览历史列表的内容,通过:1
lengyue@ubuntu:~$ history
在默认情况下,Bash会存储你所输入的最后 1000 个命令。如果我们想要找到列出目录 /usr/bin 内容的命令。我们可以这样做:1
lengyue@ubuntu:~$ history | grep /usr/bin
如果在我们的搜索结果之中,我们得到一行,包含了有趣的命令,像这样:1
88 ls -l /usr/bin > ls-output.txt
数字 “88” 是这个命令在历史列表中的行号。随后在使用另一种展开类型时,叫做 历史命令展开,我们会用到这个数字。我们可以这样做,来使用我们所发现的行:1
lengyue@ubuntu:~$ !88
bash 会把 “!88” 展开成为历史列表中88行的内容。bash 也具有按递增顺序来搜索历史列表的能力。这意味着随着字符的输入,我们可以告诉 bash 去搜索历史列表,每一个附加字符都进一步提炼我们的搜索。启动递增搜索, 输入 Ctrl-r
,其后输入你要寻找的文本。当你找到它以后,你可以敲入 Enter 来执行命令, 或者输入 Ctrl-j
,从历史列表中复制这一行到当前命令行。再次输入 Ctrl-r
,来找到下一个 匹配项(向上移动历史列表)。输入 Ctrl-g
或者 Ctrl-c
或者 Esc
,退出搜索。
OK,我们操作一遍。
首先按键 Ctrl-r:1
(reverse-i-search)`':
提示符改变,显示我们正在执行反向递增搜索。搜索过程是”反向的”,因为我们按照从”现在”到过去 某个时间段的顺序来搜寻。接下来,我们开始输入要查找的文本。在这个例子里是 “ls”1
(reverse-i-search)`ls -Do': ls -ld Documents/
搜索并返回了我们需要的结果。我们如果需要执行这个命令,就按下 Enter 键,或者我们也可以复制这个命令到我们当前的命令行,来进一步编辑它,按键 Ctrl-j 。复制它,输入 Ctrl-j:1
lengyue@ubuntu:~$ ls -ld Documents/
我们的 shell 提示符重新出现,命令行加载完毕。
下表列出了一些按键组合, 这些按键用来操作历史列表:
历史命令
按键 | 说明 |
---|---|
Ctrl-p | (previous)移动到上一个历史条目。类似于上箭头按键 |
Ctrl-n | (next)移动到下一个历史条目。类似于下箭头按键 |
Ctrl-o | 执行历史列表中的当前项,并移到下一个。如果你想要执行历史列表中一系列的命令,这很方便 |
Ctrl-r | 反向递增搜索。从当前命令行开始,向上递增搜索 |
Alt-< | 移动到历史列表开头 |
Alt-> | 移动到历史列表结尾,即当前命令行 |
Alt-p | 反向搜索,不是递增顺序。输入要查找的字符串,然后按下 Enter,执行搜索 |
Alt-n | 向前搜索,非递增顺序 |
历史命令展开
通过使用 “!” 字符,shell 为历史列表中的命令,提供了一个特殊的展开类型。一个感叹号 ,其后再加上一个数字,可以把来自历史列表中的命令插入到命令行中。还有一些其它的展开特性:
历史命令展开
按键 | 说明 |
---|---|
!! | 重复最后一次执行的命令 |
!number | 重复历史列表中第 number 行的命令 |
!string | 重复最近历史列表中,以这个字符串开头的命令 |
!?string | 重复最近历史列表中,包含这个字符串的命令 |
Warning: 应该小心谨慎地使用 “!string” 和 “!?string” 格式,除非你完全确信历史列表条目的内容。
本文作者:冰羽
本文地址: https://bingyublog.com/2018/09/15/Linux下的快捷键使用技巧/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!