В моем текущем screen
сеансе 12 открытых окон. Он работает уже несколько недель ... Я знаю, что выполнил команду ImageMagick convert
в одном из этих 12 экранных окон где-то на прошлой неделе ... Есть ли способ, с помощью которого я могу легко искать в истории Bash всех 12 экземпляров, не закрывая их и не запуская history | grep convert
на всех 12 экранах?
bash
gnu-screen
command-history
мистифицировать
источник
источник
setopt share_history
в/etc/zsh/zshrc
так этой проблемы никогда не случится со мной: PОтветы:
Вы можете запустить
history -a; history -c
во всех окнах, чтобы сохранить историю. А потомhistory -r
обновить его.Чтобы решить эту проблему более постоянно, добавьте это в свой
.bashrc
:источник
Звучит сложно. Вот несколько методов, которые могут работать для вас.
Если у вас установлены инструменты учета процессов (в Linux найдите пакет с именем
acct
) и разрешение на их использование, вы можете узнать, когда и, возможно, на каком терминале вы работалиconvert
:Если это недоступно или неокончательно, вы можете выполнить
history
команду в каждом экземпляре bash для поискаconvert
команд. Это найдет команды, которые были в файле истории, когда bash также запускался.$(seq 0 11)
перебирает номера ваших окон экрана. Обязательно пропустите окна, в которых в данный момент не запущен bash, но какой-то другой процесс, который интерпретирует ввод по-другому.screen -p $w stuff …
отправляет следующую строку в качестве ввода в указанное окно. Вам нужен перевод строки в конце строки./tmp/convert.history
будет содержать список строк, например3 convert foo.jpg
, если вы запускаетеconvert foo.jpg
в окне 3.источник
history | grep convert
во всех окнах. Я разочарован, я хотел принять еще один отличный ответ от Жиля!tcsh позволяет вам делиться историей между сеансами с помощью периодического псевдонима.
В вашем файле .cshrc (или .tcshrc):
Это автоматически выполнит команду истории каждые 60 минут. Это сохранит историю в общий файл истории в вашем домашнем каталоге. Для более частого обновления истории либо уменьшите значение tperiod, либо просто выполните команду «period» для обновления вручную
источник
Bash только пишет историю, когда выходит, что в лучшем случае делает это проблематичным. Я слышал, что Zsh может делиться историей между активными сессиями.
источник