问题描述
我想查看我的.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,你应该在那里找到它们。