我怎样才能看到bash的全部历史?

我怎样才能看到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)

首先让我展示下面的一个例子

在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): 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