有时我喜欢回顾命令历史记录来弄清楚我当时做了什么。有时了解每个命令的 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
查看全部做了什么。
此解决方案通用的,必须与每一个交互式命令行工具(不仅如此bash
,shell
您甚至可以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
解释器一起工作,或者如何工作,例如zsh
或dash
。
答案3
有一个 shell 历史记录扩展,允许您搜索历史记录并根据当前目录、git 存储库、退出状态和主机首先显示相关结果。
该项目使用 PWD 保存了扩展历史记录,~/.resh_history.json
因此您也可以直接在那里访问它。
您可以在此处安装该项目:https://github.com/curusarn/resh
CTRL使用+ 启动它R(替代反向搜索)。
搜索应用程序如下所示:
免责声明:我是该项目的创建者,这是无耻的自我推销