Я использую главным образом Терминатора, и он обычно открывается с 3 разделенными окнами терминала. Я также использую терминал Gnome по различным причинам.
Я задаюсь вопросом, как история удара обрабатывается в этом случае, поскольку я иногда пропускаю ранее данные команды, когда я работаю history
Например, моя подсказка показывает текущую строку истории удара (\!
) и если я запускаю Терминатора с 3 разделенными окнами терминала, я получаю ту же строку истории (скажем, 100) на всех терминалах. Какая история будет сохранена?
Также запуская Терминал Gnome после использования Терминатора я получаю строку 100 при запуске независимо все команды, данные прежде в Терминаторе
Сессия удара, которая сохраняется, является той для терминала, который закрывается последнее. Если Вы хотите сохранить команды для каждой сессии, Вы могли бы использовать прием, объясненный здесь.
export PROMPT_COMMAND='history -a'
Заключить страницу справочника в кавычки: “Если установлено, значение выполняется как команда до издания каждой основной подсказки”.
Так каждый раз, когда моя команда закончилась, она добавляет незаписанный объект истории к
~/.bash_history
прежде, чем отобразить подсказку (только $PS1) снова.Таким образом, после вставления той строки
/etc/bash.bashrc
Я не должен заново изобретать колеса или терять ценные секунды, перепечатывая материал просто, потому что я был ленив со своими терминалами.
Так или иначе необходимо будет принять во внимание, что команды от различных сессий будут смешаны в файле истории, таким образом, это не будет таким образом просто для чтения его позже.
См. также:
После нескольких чтений man bash
, Я использую отдельные файлы истории для каждой оболочки. Я сделал a mkdir -m 0700 ~/.history
затем добавленный
[[ -d ~/.history ]] || mkdir --mode=0700 ~/.history
[[ -d ~/.history ]] && chmod 0700 ~/.history
HISTFILE=~/.history/history.$(date +%y%b%d-%H%M%S).$$
# close any old history file by zeroing HISTFILESIZE
HISTFILESIZE=0
# then set HISTFILESIZE to a large value
HISTFILESIZE=4096
HISTSIZE=4096
к моему ~/.bashrc
. Время от времени я не забываю du -sk .history
и вычистите его. Хорошо иметь каждую команду, которую я ввел сохраненный для меня.
Я просто использовал вышеупомянутое для наблюдения то, что я делал в последнее время:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
или
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(для включения 1-го аргумента, например. sudo mount
в цепочке вида).
Показать history
от всех терминалов:
Добавить export PROMPT_COMMAND='history -a; history -r'
в Ваш .bashrc файл.
Источник: http://northernmost.org/blog/flush-bash_history-after-each-command
См. также "остающуюся персистентную историю в ударе" для другой альтернативы. Это подстраивает Вашу подсказку для отправки всех команд, когда-либо введенных в любой терминал в "персистентную историю" файл (вместе с тем, что обычно делается для постоянного клиента .history
).