使用和自定义 Bash 命令历史记录

您所在的位置:网站首页 搜索bash命令 使用和自定义 Bash 命令历史记录

使用和自定义 Bash 命令历史记录

#使用和自定义 Bash 命令历史记录| 来源: 网络整理| 查看: 265

使用和自定义 Bash 命令历史记录

bash shell 是大多数 Linux 发行版中可用的默认命令行环境。与所有 shell 环境类似,它保留用户先前执行过的命令的记录。即使我们重新启动系统,该记录也会被保存和维护。

您可能知道历史命令的基本用法,但它的功能远不止于此。 Bash 历史记录通常存储在文件 ~/.bash_history 中。它使您能够以有效的方式调用和重用存储的记录,以充分利用 bash 历史记录保存功能。不仅如此,您还可以按照您想要的方式自定义和控制 bash 命令输出。

在本文中,我们将解释如何有效地使用和自定义 bash 命令历史记录以充分利用其功能。

我们使用 Debian 10 来运行本文中提到的命令和过程。

使用 bash 命令历史记录1.查看bash历史记录

要查看 shell 命令的完整历史记录,可以在终端中运行以下命令:

$ history

它将从专门为该用户存储的历史记录文件中列出该特定用户的完整历史记录。您将看到所有命令都以分配给每个命令的编号开头。它将在顶部列出从数字 1 开始的旧命令,在底部列出较新的命令。

2. 查询历史输出

您还可以从历史输出中搜索特定关键字。将 History 命令与 grep 和特定关键字配对,以搜索与指定关键字匹配的命令,如下所示:

$ history | grep [keyword]

例如,要列出包含关键字“find”的所有命令,命令将是:

$ history | grep find3.查看最近n条命令

历史命令默认列出用户最近执行的 1000 条命令。如果您只想列出特定数字(假设是最后执行的命令的 n 个),请在终端中运行以下命令:

$ history n

例如,要列出最近执行的 7 个命令,命令将为:

$ history 7

要查看最近n个包含特定关键字的运行命令的数量,可以使用以下语法:

$ history | grep keyword |tail -n

一个例子是使用关键字“java”查看最近执行的 4 个命令。

$ history | grep java |tail -n4.查看最旧的命令

要查看最早的 n 个命令,您可以在终端中使用以下语法:

$ history | head -n

要查看包含特定关键字的最早的 n 个命令,请使用以下语法:

$ history | grep keyword |head -n

例如,使用关键字“java”查看最早执行的 4 个命令。

$ history | grep java |head -45.彻底清除Bash历史记录

要删除整个 bash 历史记录,请在终端中运行以下命令:

$ history -cw自定义 bash 命令历史记录

要自定义 bash 命令历史记录,我们必须在 ~/.bashrc 文件中进行更改。要编辑 ~/.bashrc 文件,请使用以下命令:

$ nano ~/.bashrc

完成文件修改后,使用 Ctrl+O 和 Ctrl+X 保存并关闭 nano 编辑器。

然后运行以下命令来应用修改:

$ source ~/.bashrc1. 将日期和时间戳添加到 Bash 历史记录中

如果要显示日期和时间戳以及命令历史记录,可以通过在 ~/.bashrc 中添加以下行来实现:

$ export HISTTIMEFORMAT='%F, %T '

现在运行history命令,它将显示命令历史记录以及相应的数据和时间戳。

2. 增加 Bash 历史记录的大小

Bash 默认情况下在历史列表中保留 500 个命令。但是,我们可以使用 HISTSIZE 值更改此值。

要查看 bash 历史记录的当前大小,请在终端中运行以下命令:

$ echo $HISTSIZE

同样,bash 历史文件的默认大小为 500。它是历史文件中包含的最大条目数。

要增加 bash 历史记录的大小(假设为 10000),请在 ~/.bashrc 文件中添加以下行:

$ HISTSIZE=10000 $ HISTFILESIZE=10000

要验证 bash 历史记录大小是否已成功更改,请在终端中运行以下命令:

$ echo $HISTSIZE $ echo $HISTFILESIZE3. 将 Bash 命令附加到历史文件

当 bash 会话关闭时,您可以使用 histappend 变量选择是覆盖还是追加历史文件中的命令。要查看当前设置,请在终端中运行以下命令:

$ shopt histappend

输出中的“on”表明 histappend 选项已启用,命令将附加到历史文件中而不是覆盖。当显示“off”时,histappend 选项被禁用,文件将被覆盖。

打开 ~/.bashrc 文件并:

如果要将命令附加到历史文件而不是覆盖,请添加以下行:

$ shopt -s histappend

或者,如果您想禁用追加选项并希望在退出时覆盖文件,请添加以下行:

$ shopt -u histappend4. 立即存储 Bash 历史记录

默认情况下,Bash 仅在会话结束后将会话保存到 bash 历史记录文件中。要更改此默认行为并使其立即保存您执行的每个命令,您可以使用 PROMPT_COMMAND。

编辑 ~/.bashrc 文件并添加以下行:

$ PROMPT_COMMAND='history -a'

现在,每当您执行任何命令时,它都会立即添加到历史文件中。

5. 控制 Bash 历史记录

我们可以通过 HISTCONTROL 变量控制 bash 保存命令历史记录的方式。我们可以指定它忽略重复的条目,和/或忽略带有前导空格的条目。

ignorespace – 消除以空间历史列表开头的命令。

ignoredups——消除重复的命令。

ignoreboth – 启用ignoreups和ignorespace

Erasedups-从整个列表中删除重复项

要应用这些函数,请打开 ~/.bashrc 并添加以下行,其中的值用冒号分隔,如下所示:

$ export HISTCONTROL=ignorespace:ignoredups6.忽略特定命令

我们还可以使用变量 HISTIGNORE 来控制历史记录中要忽略的命令。它是一个以冒号分隔的模式列表,我们可以在其中指定要从历史记录中忽略的所有命令。

例如,如果我们不想在历史列表中列出历史、ls、pwd等基本命令,那么我们在 ~/.bashrc 文件中添加以下行:

$ export HISTIGNORE="history:ls:pwd:"

借助 Linux bash 命令历史记录,您可以做的不仅仅是重复旧命令。在本文中,我们学习了如何使用 bash 历史记录来查看之前执行过的命令,并学习了控制 bash 保存命令历史记录的方式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3