如何在Linux上使用Bash Tab扩展和历史命令

2020年12月31日19:35:59 发表评论 45 次浏览

了解如何使用Linux上Bash shell中内置的History和tab扩展命令。历史记录和制表符扩展是便捷的工具, 可以在你使用命令行时节省大量输入时间。这是一篇入门级文章, 适合可以SSH到其服务器并使用了一些命令的用户。

要求

  • 运行Linux的云服务器
  • SSH连接
  • 基本熟悉Linux命令行

使用历史

的历史命令将打印出你最近的命令:

279  cd /var/www/html
280  vi .htaccess
281  locate httpd.conf
282  vi /etc/httpd/conf/httpd.conf
283  systemctl restart httpd
284  history

用向上箭头

重用这些命令的最简单方法是向上箭头。

每次单击键盘上的向上箭头, 它将在历史记录中向上滚动一行, 并将历史记录条目放在命令行中。

因此, 如果我要编辑httpd.conf再次输入文件, 但我不想键入文件的完整路径, 我只需点击两次向上箭头以输入历史记录条目vi /etc/httpd/conf/httpd.conf在我的命令行上, 然后按Enter再次执行它。

按行号

你还可以通过输入感叹号来使用历史记录条目!然后是行号(无空格)。例如, 执行命令vi /etc/httpd/conf/httpd.conf如上面的历史记录输出中所示, 我将输入:

!282

然后按Enter。

搜索历史

你可以通过将输出传递到以下位置来搜索Bash历史记录:grep。为此, 请使用以下命令:

history | grep [search string]

例如, 要在你的Bash历史记录中搜索使用了包含" mysql"的命令的所有时间, 该命令将是:

history | grep mysql

这将返回所有历史记录条目的列表, 以及相关的行号:

6  mysql -u root -p
29  mysql -u root -p
52   mysqldump -u root -p wordpress
268  mysql -u root -p 
269  mysql -u root -p
278  mysql -u root -p
286  history | grep mysql

这使按历史记录行号发出命令变得容易。一种方便的方法可以重用你不经常使用的命令, 或者永远不会完全记住确切的语法。

重复最后一条命令

Bash具有重复上一条命令的快捷方式:

!!

当你发出命令但忘记使用时, 这特别方便须藤。你可以使用以下命令重复相同的命令须藤在前面输入:

sudo !!

标签扩展

制表符扩展是减少打字和加重字体的另一种便捷方法。乍一看似乎有些笨拙, 但是使用制表符补全将很快成为第二自然。

如果你开始输入文件名, 然后单击"制表符", 则Bash将尝试"填空"。

例如, 假设你在一个包含三个文件的目录中:

-rw-r--r-- 1 root root      0 Jul 27 20:06 template.php
-rw-r--r-- 1 root root      0 Jul 27 20:06 test.php
-rw-r--r-- 1 root root 120105 Jul 25 17:05 v1.1.1.tar.gz

如果要移动文件v1.1.1.tar.gz到另一个目录, 只需键入:

mv v

然后点击Tab。 Bash将填写文件名:

[root@localhost ~]# mv v1.1.1.tar.gz

然后, 你可以键入要将文件移动到的目录, 然后按Enter。

但是, 假设你要编辑文件test.php。你输入:

vi te

并按Tab, 但是什么也没发生。这是因为有多个文件的名称以te, 而Bash不知道你要哪一个。

你将需要输入:

vi tes

然后按Tab键以完成制表符的操作。另外, 你也可以点按两次Tab键, 然后Bash会向你显示可用选项(模板和测试)。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: