Если вы просто просматриваете файл истории, вам нужно искать команды cd
, стоящие перед командой, которую вы смотрите, для понимания правильного места выполнения.
Если вы хотите отслеживать pwd
в своем файле истории, вам придется написать какой-нибудь трекер.
Некоторые способы сделать это просто:
.0 Прежде всего, простой способ найти местоположение из вашей .bash_history
:
grep <.bash_history '^cd \|theSpecificCommandISearchFor'
.1 script
Вы можете запустить сеанс оболочки, набрав:
script -a /tmp/script-XXXX -t 2>/tmp/script-XXXX.tm
после окончания сеанса вы можете:
scriptreplay /tmp/script-XXXX.tm /tmp/script-XXXX
чтобы увидеть все, что было сделано.
Это универсальное решение, должно прекрасно работать с любым интерактивным инструментом командной строки (не только bash
или shell
, вы даже можете сохранить сеанс vim
с помощью этого инструмента).
Вы можете добавить это в начало вашего .bashrc
(если вы используете bash)
# 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
Примечание: это работает под bash, я не знаю, как и как это работает с другими интерпретаторами shell
, такими как zsh
или dash
.