Intereting Posts
AIX: ошибка lsdev на устройстве pkcs11 Является ли использование epub2pdf потенциальной угрозой безопасности? Есть ли альтернатива? Показывать текстовый файл по одной странице за один раз, подождать 20 секунд, затем автоматически настроить Усиление баса в звуковой системе Может ли программное обеспечение GPL быть куплено компанией и все еще выпущено как GPL? Большое медиа-хранилище и ZFS или BTRFS Почему «дата» печатает дату с неправильным порядком слов при локализации? Каков наилучший способ установки apt-пакетов из Debian Stretch на Raspbian Jessie? Автоматизированные сборки RPM wget загружает tar.gz файл как html? Я не знаю, как загружать Certbot в вашу операционную систему Почему мой пользовательский логин вызывает systemd для использования процессора? Выход команды сохранения в переменной, если команда включает в себя каналы Обратный порядок элементов с точками в строке Debian: пустой экран с запущенным процессом?

Могу ли я легко найти свою историю на многих экранах?

В моем текущем сеансе screen есть 12 открытых окон. Он работает в течение нескольких недель … Я знаю, что я выполнил команду convert ImageMagick в одном из этих 12 экранов на прошлой неделе … есть ли способ, который я могу легко найти в истории Bash из всех 12 экземпляров, не закрывая их или history | grep convert history | grep convert на всех 12 экранах?

Вы можете запустить history -a; history -c history -a; history -c во всех окнах, чтобы сохранить историю. А потом history -r обновить его.

Чтобы решить эту проблему, добавьте ее в свой .bashrc :

 export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" 

Звучит сложно. Вот несколько способов, которые могут сработать для вас.

Если у вас установлены инструменты учета операций (в Linux, найдите пакет под названием acct ) и разрешение на их использование, вы можете узнать, когда и, возможно, на каком терминале вы запускаете convert :

 lastcomm convert 

Если это недоступно или не является окончательным, вы можете выполнить команду history в каждом экземпляре bash для поиска команд convert . Это найдет команды, которые были в файле истории при запуске bash.

 : >/tmp/convert.history for w in $(seq 0 11); do screen -p $w -X stuff \ 'history | sed 's/^.*convert/'$w'&/" >>/tmp/convert.history '; done 
  • $(seq 0 11) выполняет итерацию по номерам ваших окон экрана. Обязательно пропустите окна, которые в настоящее время не запускаются bash, но некоторые другие процессы, которые будут интерпретировать ввод по-разному.
  • screen -p $w stuff … отправляет следующую строку в качестве ввода в указанное окно. Вам нужна строка новой строки в конце строки.
  • Файл /tmp/convert.history будет содержать список строк, например 3 convert foo.jpg , если вы запустили convert foo.jpg в окне 3.

tcsh позволяет обмениваться историей между сеансами с использованием периодического псевдонима.

В файле .cshrc (или .tcshrc):

 set tperiod = 60 #(or any other number. Time in minutes between refreshing) alias periodic 'history -S; echo "Syncing history"' 

Это автоматически выполнит команду истории каждые 60 минут. Это позволит сохранить историю в общий файл истории в вашем домашнем каталоге. Чтобы чаще обновлять историю, либо уменьшите номер тэриода, либо просто выполните «периодическую» команду для ручного обновления

Bash только пишет историю, когда она выходит, что делает эту проблему в лучшем случае. Я слышал, что zsh может делиться историей между активными сеансами.