4

关于 history 命令的几个使用技巧

 1 year ago
source link: https://www.51cto.com/article/745559.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
2906c1549db818ba0c06786c5a6752335134be.jpg

在使用过一段时间 Linux 终端之后,大家应该都会注意到,使用上下箭头按键,可以执行之前运行过的命令,这就是 history 所起到的作用。

1,查看 bash 历史记录(history)

我们在之前的文章中介绍过 history 的使用,大家感兴趣可以参考:

​在Linux中怎样使用history命令​

查看 bash 历史记录,最简单的方法就是在命令行中输入 history 命令:

history

这将显示你历史记录中的上百或上千条命令,这取决于 HISTSIZE 变量中设定的大小。

图片

如果不想列出所有的历史记录,可以限制显示出的记录条数。比如,想要只显示最近的 7 条历史命令,可在 history 命令后跟上一个数字 7,如下:

history 7
图片

2,运行 bash 历史记录中的命令

在查看 history 记录后,可以使用一个感叹号 ! 来运行其中的某条历史命令,如下方式:

! <HISTORY NUMBER>
图片

使用两个感叹号 !! 可以返回历史记录中最后的一条命令。比如:

sudo !!
图片

另外,也可以使用一个特定的字符串来运行 history 命令,这个“特定的字符串”就是 history 命令中,与其匹配的命令:

!text

比如,你曾经运行过 echo $HISTCONTROL,然后想再次运行它,那么可以这样:

!echo

上述命令,会再次运行 history 中的最后一条 echo 命令:

图片

这其实也相当于是在 history 命令中以 “字符串” 方式匹配搜索。

如果你不确定在 history 中的具体命令,可以在其后添加 :p 来打印该命令,而不是运行,比如 !echo:p,!23:p 等。

3,搜索 history 记录

你可能会想到使用​​ grep​​ 搜索 history 记录,像下面这样:

history | grep text

搜索历史记录的一个更好且超级方便的方法是使用 ctrl + r 键,反向搜索并键入您要查找的字符串。

可以通过反复按 ctrl + r 来循环选择,当找到要查找的命令时,按 ctrl + o 或只按 enter 键即可选择并运行该命令。

例如,下面的示例搜索包含 “aud” 的命令:

图片

如果找不到想要的命令,可更改搜索的字符串,或者按 ctrl + g 退出搜索。

4,重新使用历史记录中以前命令中的参数

关于 history 的另外一个很有用的技巧是,可以在新命令中使用以前命令中的参数。

我们可以像这样使用上一个命令的最后一个参数:

<new command> !$

比如,假设我们刚刚使用过 less 命令读取过某个文件,然后想再编辑此文件,那么可以使用 !$ 快捷键,如下图所示:

图片

上面的选项只提供上一个命令的最后一个参数。如果需要所有参数,请使用以下命令:

<new command> !*

5,清除历史记录中的条目

有一个名为 HISTCONTROL  的环境变量,可以帮助我们处理 bash 历史记录中的冗余条目。可以为其指定以下三个值之一:

  • ignorespace:使用这个变量值,在运行某个命令时,在该命令前面加一个空格,该命令照常运行,但是不会记录在 history 记录中;
  • ignoredups:如果有两个或多个相同的命令连续运行,则只有一个命令会记录在 history 记录中;
  • ignoreboth:设置上述两个功能。

设置 HISTCONTROL  变量,应该在 bashrc 文件中设置,以便在每次使用 bash shell 时该变量的设置都会起作用。

如果 history 中的记录太多,可以使用 -c 选项来清理历史记录,然后从新开始记录新的命令。

history -c
图片

除了我们上面介绍的以外,history 还有很多东西值得研究学习,大家可以参考 history 命令的 man 手册,感兴趣的话还可以了解一下  history builtins,地址为:

​https://www.gnu.org/software/bash/manual/html_node/Bash-History-Builtins.html​​​


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK