如何通过命令行查看`.bash_history` 文件?

isu*_*rce 79 command-line bash history

我想查看我的.bash_history文件的内容,但不知道如何通过命令行到达那里。

ter*_*don 66

如果您要访问的实际文件本身,只用你喜欢的文本编辑器(我用的emacs,但你可以使用plumagedit或者vim或其他):

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

如果您的历史文件,那是默认位置。如果您在那里没有找到任何内容,您可能已经更改了历史文件的名称。这存储在$HISTFILE变量中,因此将其打印出来以检查其当前值:

echo $HISTFILE
Run Code Online (Sandbox Code Playgroud)

如果您只想查看历史记录而不是文件,则可以history按照@minerz029 的建议运行。没有选项history命令只打印您的内容,$HISTFILE然后是在当前 shell 中执行的尚未写入该文件的命令,以及行号。


kir*_*iri 54

如果你确实需要的输出.bash_history文件,替换history
cat ~/.bash_history在下面的所有命令。

如果您确实想要前面没有数字的命令,请使用此命令而不是history

history | cut -d' ' -f 4-
Run Code Online (Sandbox Code Playgroud)

否则,将没有区别(除非您使用不同的外壳)。


最后 15 个命令

您可以使用

history | tail -n 15
Run Code Online (Sandbox Code Playgroud)

仅获取历史记录的最后 15 行,最后打印的最后一次执行(在底部)。


搜索命令

或者,使用

history | grep "apt-get" | tail -n 15
Run Code Online (Sandbox Code Playgroud)

获取最后apt-get打印的最后 15 个命令(在底部)。您可以替换apt-get为您想要搜索的任何命令(或命令参数)(它可以是正则表达式)。


滚动历史

您可以使用

history | tac | less
Run Code Online (Sandbox Code Playgroud)

从顶部的最新命令开始滚动浏览所有执行的命令。按q退出。

同样,使用

history | grep "apt-get" | tac | less
Run Code Online (Sandbox Code Playgroud)

滚动浏览所有使用“ apt-get”执行的命令(包括参数),从顶部的最新命令开始。按q退出。


hoo*_*enz 16

除了 minerz029 的出色回答。

重申 - 'history' 命令打印历史及其旁边的数字。

您可以将历史输出通过管道传输到 grep、less 等。

历史的输出还在输出旁边的左侧显示一个数字。例如

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 
Run Code Online (Sandbox Code Playgroud)

使用此编号,您可以重新运行该命令。

例如重新运行 473 我会输入终端

 admin@xen1~$ !473
Run Code Online (Sandbox Code Playgroud)

然后按回车键重复历史输出中 473 旁边的命令。

您还可以通过键入ctrl + r键在命令历史记录中以交互方式向后搜索,然后开始键入命令的一些内容,它会搜索并填写它。当您找到它时,您可以输入回车来重复它,或者按[tab]键将其复制到命令行以首先编辑命令。

当然,最后两个选项在 bash shell 中有效。我不确定这些功能是否适用于其他 shell。但是由于 bash 是 Ubuntu 默认的 shell,你应该在那里找到它们。