命令历史似乎缺少前 75 行

el_*_*zul 5 command-line bash history bashrc bash-history

几年前,我进行了从 14.04 到 16.04 的自动分发更新。我有生以来第一次能够在自动分发更新后继续使用计算机。像往常一样,软件存储库都经过监控,因此系统更新无法正常工作,但我已经熬过去了。

但是,我将进行 18.04 的全新安装。为了能够在安装后更轻松地配置我的系统,我将我的命令历史导出到一个文本文件。

$ history > /.../20180915_Command_history.txt
Run Code Online (Sandbox Code Playgroud)

漂亮的是,生成的文本文件包含行号。有点神秘,第一行号是76,看了前几行,好像有一些以前的命令。

  1. 行号是否出于某种原因从 76 开始?
  2. 如果没有,有什么办法可以看到第 1 到 75 行吗?

Rav*_*ina 13

首先,如果您需要备份命令行历史记录,只需复制此文件:

~/.bash_history
Run Code Online (Sandbox Code Playgroud)

请记住,您必须关闭所有终端或运行history -a以将这些历史会话中的所有命令附加到历史文件中。


如果没有,有什么办法可以看到第 1 到 75 行吗?

保存在历史记录中的每个命令都可以在~/.bash_history文件中找到,打开终端并运行:

cat ~/.bash_history
Run Code Online (Sandbox Code Playgroud)

要获得类似于history带有编号运行的命令的输出:

cat -n ~/.bash_history
Run Code Online (Sandbox Code Playgroud)

行号是否出于某种原因从 76 开始?

运行此命令:

grep "^HIST" .bashrc
Run Code Online (Sandbox Code Playgroud)

您必须获得类似于以下内容的输出:

HISTSIZE=1000
HISTFILESIZE=2000
Run Code Online (Sandbox Code Playgroud)

正如我之前所说,~/.bash_history保留命令行的历史记录。

  • HISTFILESIZE节目应该有多少个命令~/.bash_history不断的跟踪,对矿山是2000。

  • 并且HISTSIZEhistory命令(实际上是内置的shell)跟踪的命令数。

当您打开终端并运行时history,它会HISTSIZE从中选择最后数量的命令~/.bash_history并将其显示给您。

如果您运行新命令,它将从会话中删除旧命令并将新命令附加到其列表的末尾,以便命令的数量匹配HISTSIZE

我想一边询问你有74比命令更的问题HISTSIZE在你的.bash_history,这就是为什么它开始于75的原因。


来自man bash

  • HISTSIZE

    命令历史记录中要记住的命令数。

  • HISTFILESIZE

    历史文件中包含的最大行数。