Как посмотреть прошлую историю каталогов, в которой была оболочка?
Иногда мне нравится заглядывать в историю команд, чтобы понять, что я делал. Иногда было бы полезно узнать, что такое cwd для каждой команды.
Итак, мне интересно, есть ли способ отследить это. Я полагаю, что не слишком страшно просто вставить cwd в историю в файле истории, хотя это будет иметь большую избыточность. Так что, возможно, лучше настроить его так, чтобы в качестве части рендеринга подсказки я мог заставить zsh записать текущий индекс истории и cwd в какой-то другой журнал. Этого достаточно для хранения информации для последующего использования.
3 ответа
Насколько я знаю, это было бы то, что вы должны были бы написать сами. Все может стать немного запутанным, если ваша файловая иерархия вообще изменится. В любом случае, эта ссылка может помочь вам, если вы решите написать это самостоятельно.
Если вы просто ищете в файле истории, вы должны искать cd
команды, которые стоят перед командой, которую вы смотрите, для понимания правильного места выполнения.
Если вы хотите отслеживать pwd
в вашем файле истории вам нужно будет написать какой-нибудь трекер.
Некоторые способы сделать это просто:
.0 Прежде всего, простой способ найти местоположение из вашего .bash_history
:
grep <.bash_history '^cd \|theSpecificCommandISearchFor'
0,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
,
Существует расширение истории оболочки, которое позволяет вам выполнять поиск в истории и сначала показывает релевантные результаты на основе текущего каталога, репозитория git, статуса выхода и хоста.
Проект сохраняет расширенную историю с PWD для
Установить проект можно здесь: https://github.com/curusarn/resh
Запустите его с помощью CTRL+R(заменяет обратный поиск).
Вот как выглядит приложение поиска:
Дисклеймер: Я создатель проекта и это бессовестная самореклама.