Как посмотреть прошлую историю каталогов, в которой была оболочка?

Иногда мне нравится заглядывать в историю команд, чтобы понять, что я делал. Иногда было бы полезно узнать, что такое 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(заменяет обратный поиск).
Вот как выглядит приложение поиска:

Дисклеймер: Я создатель проекта и это бессовестная самореклама.

Другие вопросы по тегам