如何查看shell所在目录的过去历史记录?

如何查看shell所在目录的过去历史记录?

有时我喜欢回顾命令历史记录来弄清楚我当时做了什么。有时了解每个命令的 cwd 是什么会很有帮助。

所以,我想知道是否有某种方法可以跟踪这一点。我猜将 cwd 与历史文件中的历史记录一起转储并不是太糟糕,尽管它会有很多冗余。所以也许最好对其进行配置,以便作为呈现提示的一部分,我可以让 zsh 将当前历史索引和 cwd 写入其他日志。这足以存储信息以供以后使用。

答案1

据我所知,这将是你必须自己编写的东西。不过,如果你的文件层次结构发生变化,事情可能会变得有点混乱。无论如何,如果您决定自己写这个,这个链接可能会对您有所帮助。

答案2

如果你只是在历史文件中寻找,你必​​须搜索cd有效的命令您观察的命令,以了解正确的执行位置。

如果您想要跟踪pwd您的历史文件,您将必须编写一些跟踪器。

一些简单的方法:

.0首先,有一种简单的方法可以从您的 中找到一个位置.bash_history

grep <.bash_history '^cd \|theSpecificCommandISearchFor'

.1 script你可以通过输入以下命令来启动 shell 会话:

script -a /tmp/script-XXXX -t 2>/tmp/script-XXXX.tm

然后,在结束会话后,您可以:

scriptreplay /tmp/script-XXXX.tm /tmp/script-XXXX

查看全部做了什么。

此解决方案通用的,必须与每一个交互式命令行工具(不仅如此bashshell您甚至可以vim使用此工具保存会话)。

你可以将它添加到你的顶部.bashrc(如果你使用

# THIS WILL LOG EVERYTHING ON A TYPSCRIPT FILE USING script TOOL! # 
if ! [[ "$(ps ho cmd $PPID)" =~ ^/usr/bin/script\ -t\ $HOME/.bash_script_ ]]
  then
    function runScript() {
        local sname=$HOME/.bash_script_$(date +%F_%H-%M-%S_$$)
        exec /usr/bin/script -t 2> $sname.tim $sname
        exit 0
    }
    runScript
  fi

.2用于trap debug创建备用历史文件,例如:

trap 'echo "$PWD :: $BASH_COMMAND" >>/tmp/my_trapDebug_history' debug

注意:本作品属于,我不知道这是否可以与其他shell解释器一起工作,或者如何工作,例如zshdash

答案3

有一个 shell 历史记录扩展,允许您搜索历史记录并根据当前目录、git 存储库、退出状态和主机首先显示相关结果。

该项目使用 PWD 保存了扩展历史记录,~/.resh_history.json因此您也可以直接在那里访问它。

您可以在此处安装该项目:https://github.com/curusarn/resh
CTRL使用+ 启动它R(替代反向搜索)。
搜索应用程序如下所示:

搜索应用程序的屏幕截图

免责声明:我是该项目的创建者,这是无耻的自我推销

相关内容