前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >08-高级键盘技巧

08-高级键盘技巧

作者头像
见贤思齊
发布2020-08-05 12:18:18
9720
发布2020-08-05 12:18:18
举报
文章被收录于专栏:初见Linux初见Linux

省事(即用最少的击键次数执行最多的任务)是命令行最希望达到的目标之一

命令行的另一目标是:用户在执行任务时手指无需离开键盘,不使用鼠标

接下来让我们认识下令键盘使用得更快、更高效的 bash 功能。

本章将使用到以下命令:

  • clear: 清屏。
  • history: 显示历史列表的记录。

一、编辑命令行

bash 使用了一个名为 Readline 的库(供不同的应用程序共享使用的线程集合)来实现命令行的编辑。 在之前也曾提到过相关的内容,比如:通过箭头键移动光标。除此之外,bash还有很多其它功能,它们可以当作在工作中使用的附加工具。虽然并不要求学会所有这些功能,但是学会其中的一些功能还是非常有用的。

注意

下面有些组合键(尤其是对于那些使用了 Alt 键的组合键)可能会被图形用户界面识别为其它功能。 但当使用虚拟控制台时,所有的组合键应能正常工作。

1.光标移动

用来移动光标的组合键

(1)光标移动命令

组合键

作用

Ctrl-A

移动光标到行首。

Ctrl-E

移动光标到行尾。

Ctrl-F

光标向前移动一个字符(和右箭头键作用一样)。

Ctrl-B

光标向后移动一个字符(和左箭头键作用一样)。

Alt-F

光标向前移动一个字。

Alt-B

光标向后移动一个字。

Ctrl-L

清屏并把光标移到左上角(clear 命令可以完成相同的工作)。

2.修改文本

用来编辑命令行字符的键盘指令

(1)文本编辑命令

组合键

作用

Ctrl-D

删除光标处的字符。

Ctrl-T

使光标处的字符和它前面的字符对调位置。

Alt-T

使光标处的字和它前面的字对调位置。

Alt-L

把从光标到字尾的字符转换成小写字母形式。

Alt-U

把从光标到字尾的字符转换成大写字母形式。

3.剪切和粘贴文本

Readline 文档中使用术语 killing 和 yanking 来指代通常所说的剪切和粘贴。 被剪切的内容存放在一个称为 kill-ring 的缓冲区中。

(1)剪切和粘贴命令

组合键

作用

Ctrl-K

剪切从光标到行尾的文本。

Ctrl-U

剪切从光标到行首的文本。

Alt-D

剪切从光标到当前词尾的文本。

Alt-Backspace

剪切从光标到词头的文本。如果光标在一个单词的开头,则剪切前一个单词。

Ctrl-Y

把 kill-ring 缓冲区中的文本粘贴到光标位置。

二、自动补齐功能

shell 的一种称为“ 自动补齐 ” 的机制为用户提供了很大的帮助。

(1)怎么做?

在输入命令时,按 Tab 键将触发自动补齐功能

示例
例1
代码语言:javascript
复制
ls

# 查看当前工作目录

假设当前工作目录中含有 ls-output.txt 文件,输入如下命令,但是不要按 Enter 键。

代码语言:javascript
复制
ls l

# 参数不输入完整。

此时按 Tab 键。

代码语言:javascript
复制
# 会出现如下结果:
ls ls-output.txt

# 自动补齐机制会自动将参数补全。

观察 shell 是如何补齐这一行的。

例2

假设当前工作目录中含有多个 D 开头的文件(Desktop、Documents),输入如下命令,但是不要按 Enter 键。

代码语言:javascript
复制
ls D

# 参数不输入完整。

此时按 Tab 键。

代码语言:javascript
复制
# 无变化

ls D

没有自动补齐,只有哔哔声。这是因为字母 D 和目录中一个以上的名称匹配。 要让自动补齐功能生效,必须保证输入内容不能模棱两可(即必须是确定性的)。

代码语言:javascript
复制
# 若输入以下内容:
ls Do

# 按下Tab键,会出现:
ls Documents
# 自动补齐功能生效了

(2)应用

以上例子给出的是路径名的自动补齐,这也是最常用的方式。 自动补齐也可以针对 变量(如果单词以 $ 开头)、 用户名(如果单词以 ~ 开头)、 命令(如果单词是命令行的第一个单词)、 主机名(如果单词以 @ 开头,注意:只对 /etc/hosts 目录下的主机名生效) 起作用。

(3)自动补齐命令

有一些控制和元键序列 与 自动补齐功能相关联。

组合键

作用

Alt-$

显示所有可能的自动补齐列表。在大多数系统中,可通过按两次 Tab 键实现,而且也会更容易一些。

Alt-*

插入所有可能的匹配项。当需要用到一个以上的匹配项时,将比较有用。

除了以上这些,还有很多组合键可以在 bash man页面的 READLINE 部分获取更多的相关内容列表。

三、使用历史命令

第 1 章已经提到,bash 会保存使用过的命令 的历史记录。 这些命令的历史记录列表保存在用户主目录的 .bash_history 文件中这些历史记录非常有用,可以大大减少用户敲打键盘的次数,特别是和命令行编辑结合使用的时候

1.搜索历史命令

(1)查看历史记录列表

任何情况下,我们都可以通过如下命令查看历史记录的内容列表

代码语言:javascript
复制
history | less

bash 默认会保存用户最近使用过的 500 个命令。 其中,500 是个默认值,关于如何改变这个默认值将在第 11 章介绍。

示例

假设想找到用来列出 /usr/bin 目录下内容的命令,可以进行如下操作:

代码语言:javascript
复制
history | grep /usr/bin

# 假设得到以下命令
99 ls -l /usr/bin > ls-output.txt
(2)历史记录扩展

数字 99 表示这个命令行在历史记录列表中所处的行号,我们可以通过使用名为历史记录扩展的扩展类型来立即使用它。

① 语法格式
代码语言:javascript
复制
!行号
示例
代码语言:javascript
复制
!99

bash 将把 !99 扩展为历史列表中第 99 行的内容。

② 支持递增地搜索

​ bash 也支持以逆向递增的方式搜索历史记录(也就是说,当搜索历史记录时,随着输入字符数的增加,bash 会相应地改变搜索范围)。 按下 Ctrl-R 键,接着输入想要查找的内容,可以开始逆向递增式地搜索,当查找到想要的内容时,按 Enter 键表示执行此命令。 而按下 Ctrl-J 键,将把搜索到的内容从历史记录列表中复制到当前命令行。 当要查找下一个匹配项时(即继续向过去搜索历史记录),再次按下 Ctrl-R 键。 若想要退出搜索,按下 Ctrl-G 或 Ctrl-C 即可。

示例

首先,按下 Ctrl-R 。提示符发生改变,提示正在进行逆向递增式搜索。 称为“ 逆向 ” 是因为查找的是从 “ 现在 ” 到 “ 过去 ” 的某个时间之间的操作。 接着,输入要查找的内容,比如查找 /usr/bin。 假设搜索到了,返回了结果。此时我们可以按 Enter 键执行搜索结果,也可按下 Ctrl-J ,把搜索结果复制到当前命令行。 shell 将实时响应,命令行将被加载,准备运行。

(3)历史记录命令

一些用来手动操作历史记录的组合键。

组合键

作用

Ctrl-P

移动到前一条历史记录(相当于向上箭头键)。

Ctrl-N

移动到后一条历史记录(相当于向下箭头键)。

Alt-<

移动到历史记录列表的开始处。

Alt->

移动到历史记录列表的结尾处。即当前命令行

Ctrl-R

逆向递增地搜索。从当前命令行向前递增搜索。

Alt-P

逆向非递增地搜索。按下这个组合键,接着输入待搜索的字符串,再按下 Enter 键后,搜索才真正开始执行。

Alt-N

向前非递增地搜索。

Ctrl-O

执行历史记录列表中的当前项,执行完跳到下一项。若要把历史记录中的一系列命令重新执行一遍,使用该组合键将很方便。

2.历史记录扩展

​ shell 提供了一种专门用来扩展历史记录项的方式——使用 ! 字符。前面我们曾提到过,如何通过在感叹号后面跟数字的方式,将来自历史记录列表中的命令插入到命令行中。除了这种方式,还有很多其它的扩展特性。具体如下:

(1)历史记录扩展命令

序列

行为

!!

重复最后一个执行的命令(按 向上箭头键 再按 Enter 键也可以实现相同的功能,而且操作更简单)。

!number

重复历史记录中第 number 行的命令。

! string

重复最近的以 string 开头的历史记录。

!?string

重复最近的包含 string 的历史记录。

(2)谨慎使用 “ ! string ” 和 “ !?string ”

当使用 “ ! string ” 和 “ !?string ” 时,请务必小心谨慎,除非对历史记录中的内容非常确信。

(3)其它的可用特点

​ 历史记录扩展机制中还有很多其它的可用特点,但是该主题太过晦涩难懂,此处不再讨论。可以查阅 bash 帮助页面中的 “ HISTORY EXPANSION ” 部分获取更多细节。

四、本章结尾语

​ 本章介绍了 shell 提供的一些键盘操作技巧,它们能够帮助打字员减少工作量。随着时间的推移,你会越来越多地接触到命令行。通过学习本章内容,可以获得更多的键盘使用技巧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、编辑命令行
    • 1.光标移动
      • (1)光标移动命令
    • 2.修改文本
      • (1)文本编辑命令
    • 3.剪切和粘贴文本
      • (1)剪切和粘贴命令
  • 二、自动补齐功能
    • (1)怎么做?
      • (2)应用
        • (3)自动补齐命令
        • 三、使用历史命令
          • 1.搜索历史命令
            • (1)查看历史记录列表
            • (2)历史记录扩展
            • (3)历史记录命令
          • 2.历史记录扩展
            • (1)历史记录扩展命令
            • (2)谨慎使用 “ ! string ” 和 “ !?string ”
            • (3)其它的可用特点
        • 四、本章结尾语
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档