我怎样才能看到bash的全部历史?
首先让我展示下面的一个例子 在shell(1)中,我执行了以下命令我怎样才能看到bash的全部历史?,bash,shell,history,Bash,Shell,History,首先让我展示下面的一个例子 在shell(1)中,我执行了以下命令 $ ping google.com PING google.com (74.125.235.164) 56(84) bytes of data. 64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms 64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164)
$ ping google.com
PING google.com (74.125.235.164) 56(84) bytes of data.
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms
然后,打开另一个shell(2)并查看历史
$ history
.
.
.
8720 exit
8721 clear
8722 history
在本例中,shell无法看到shell(1)执行的历史,但我希望看到每个shell中的所有bash历史
所以我的问题是,我如何才能看到所有的bash历史?有人会黑客吗
提前非常感谢 您应该查看
histappend
shell选项和-a
标记到history
:
histappend
如果已设置,则当shell退出时,历史记录列表将附加到由HISTFILE
变量的值命名的文件,而不是覆盖该文件
历史记录
-a
将“新”历史记录行(自当前bash会话开始以来输入的历史记录行)附加到历史记录文件中
如果将history-a
放入PROMPT\u命令
,您将得到一个始终最新的.bash\u history
文件。尝试以下操作:
编辑.bashrc并将其附加到其末尾:
shopt -s histappend
PROMPT_COMMAND="history -n; history -a"
unset HISTFILESIZE
HISTSIZE=2000
资料来源:
虽然我倾向于使用
vim ~/.bash_history
然后使用
/
搜索您可以安装高级Shell历史记录之类的东西,它会将每个命令记录到sqlite3数据库中。它附带了一个从命令行查询数据库的工具。
通过此设置,您将拥有跨所有会话的命令历史记录的统一视图。您还可以获得当前工作目录(或子树)的命令历史记录、命令退出代码、命令持续时间等信息
完整披露:我编写并维护了该工具。正如一些人所指出的,您需要使用
shopt-s histappend
。通过运行shopt
并验证histappend是否处于“打开”状态进行检查
要确保每个shell的每个命令(跨多个并发shell)都出现在历史记录中,请在.bashrc文件末尾添加以下命令:
# Skip if not an interactive shell
if [ -z "${PS1}" ]; then return; fi
export PROMPT_COMMAND="history -a; history -c, history -r; ${PROMPT_COMMAND}
-答:将新的历史记录行(自当前Bash会话开始以来输入的历史记录行)附加到历史记录文件
-c:清除历史记录列表
-r:读取当前历史文件并将其内容附加到历史列表中
运行source.bashrc
或创建新会话,并在多个终端窗口中输入注释#Tn
。然后在一个终端上,输入history | tail-N
查看最后N行。您应该可以看到在不同终端上输入的所有注释
将以下内容添加到/etc/profile.d/bashrc.sh中可能会有所帮助,以便在历史记录的每一行上获得时间戳:
if [ -z "${PS1}" ]; then return; fi
export HISTTIMEFORMAT='%F %T '
结果如下所示:
[moi@laBoheme ~]$ history | tail -4
3292 2019-01-22 12:41:27 # T1
3293 2019-01-22 12:41:34 # T2
3294 2019-01-22 12:41:42 # T3
3295 2019-01-22 12:41:50 history | tail -4
当我在虚拟环境(venv)中工作时,如何做到这一点?~/。bash_history仅显示虚拟环境之外的命令。@Raif-您需要以运行应用程序命令(root或等效程序)的“用户”身份访问虚拟环境中的终端。如果安装了zsh,则可能是~/.zsh_history
[moi@laBoheme ~]$ history | tail -4
3292 2019-01-22 12:41:27 # T1
3293 2019-01-22 12:41:34 # T2
3294 2019-01-22 12:41:42 # T3
3295 2019-01-22 12:41:50 history | tail -4