Se você está apenas procurando no arquivo de histórico, é necessário procurar os comandos cd
que ficam antes do comando que você está assistindo, para entender o local de execução correto.
Se você quiser acompanhar pwd
no seu arquivo de histórico, terá que escrever um rastreador.
Algumas maneiras de fazer isso simplesmente:
.0 Antes de tudo, uma maneira simples de encontrar um local do seu .bash_history
:
grep <.bash_history '^cd \|theSpecificCommandISearchFor'
.1 script
Você pode iniciar uma sessão de shell digitando:
script -a /tmp/script-XXXX -t 2>/tmp/script-XXXX.tm
depois de encerrar sua sessão, você pode:
scriptreplay /tmp/script-XXXX.tm /tmp/script-XXXX
para ver tudo o que foi feito.
Esta solução é genérica , deve funcionar bem com todas as ferramentas de linha de comandos interativos (não apenas bash
, nem shell
, você pode até salvar vim
sessão com esta ferramenta).
Você pode adicionar isso ao topo do seu .bashrc
(se você usar 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 use trap debug
para criar um arquivo de histórico alternativo, como:
trap 'echo "$PWD :: $BASH_COMMAND" >>/tmp/my_trapDebug_history' debug
Nota: Este trabalho em bash , não sei se nem como isso funciona com outro intérprete shell
, como zsh
ou dash
.