问题描述

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

最佳解决办法

如果您想访问实际文件本身,只需使用您喜欢的文本编辑器(我使用emacs,但您可以使用gedit或vim或其他任何一种pluma):

emacs ~/.bash_history

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

echo $HISTFILE

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

次佳解决办法

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

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

history | cut -d' ' -f 4-

否则,没有区别(除非你使用不同的shell)。

最后15个命令

您可以使用

history | tail -n 15

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

搜索命令

或者,使用

history | grep "apt-get" | tail -n 15

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

滚动历史记录

您可以使用

history | tac | less

滚动查看从最顶层开始执行的所有命令。按q退出。

同样,使用

history | grep "apt-get" | tac | less

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

第三种解决办法

除了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

使用此编号,您可以使用re-run命令。

例如到re-run 473我会输入终端

admin@xen1~$ !473

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

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

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

参考资料

Logo

更多推荐