40

首先让我在下面展示一个示例。

在 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 历史记录?有人知道如何破解吗?

非常感谢您!

4

5 回答 5

45
cat ~/.bash_history

也可以,虽然我倾向于只使用

vim ~/.bash_history 

然后用于/搜索

于 2015-10-02T18:26:40.603 回答
25

您应该查看histappendshell 选项和-a标志history

histappend

如果设置,历史列表将在 shell 退出时附加到由HISTFILE变量值命名的文件,而不是覆盖文件。

history

-a 将“新”历史记录行(自当前 bash 会话开始后输入的历史记录行)附加到历史记录文件。

如果你把history -a你的PROMPT_COMMAND,你会得到一个永远是最新的.bash_history文件。

于 2013-02-27T16:12:38.923 回答
6

试试这个:

编辑您的 .bashrc 并将其附加到它的末尾:

shopt -s histappend
PROMPT_COMMAND="history -n; history -a"
unset HISTFILESIZE
HISTSIZE=2000

来源:http ://subbass.blogspot.com.br/2009/10/howto-sync-bash-history-between.html

于 2013-02-27T16:36:02.687 回答
4

您可以安装诸如 Advanced Shell History 之类的东西,它将每个命令记录到 sqlite3 数据库中。它带有一个用于从命令行查询数据库的工具。 https://github.com/barabo/advanced-shell-history

通过此设置,您将拥有所有会话中命令历史记录的统一视图。您还可以获得当前工作目录(或子树)的命令历史记录、命令退出代码、命令持续时间等内容。

完全披露:我编写并维护了该工具。

于 2017-03-16T18:38:13.903 回答
1

正如一些人所指出的,您需要使用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}

-a:将新的历史行(自当前 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
于 2019-01-22T21:31:20.607 回答