в Linux Ubuntu Баш терминала. Есть ли способ сохранить историю Bash без записи выхода? я установил конфигурацию на "HISTCONTROL = erasedups"
который на мой взгляд работает лучше, чем ignoredups.
В любом случае по какой-то причине он не сохранит последние несколько команд в терминале bash, если я не введу «exit». Я привык просто щелкать крестиком в окне терминала, поэтому меня всегда раздражает, что последние команды не были сохранены при повторном входе в систему.
напоминание: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/#more-130
Ответы:
История Баш
Любые новые команды, которые были введены в активном терминале, могут быть добавлены к
.bash_history
файл с помощью следующей команды:Единственная хитрая концепция, которую нужно понять, это то, что каждый терминал имеет свою собственную историю bash. список (загружается из
.bash_history
файл при открытии терминала)Если вы хотите извлечь любую новую историю, которая была написана другими терминалами во время жизни этого активного терминала, вы можете добавить содержимое
.bash_history
файл к активной истории Bash списокЭто очистит текущий список истории, поэтому мы не получим повторный список и добавим файл истории в (теперь пустой) список.
Решение
Вы можете использовать переменную bash
PROMPT_COMMAND
подавать команду с каждым новым приглашением (каждый раз, когда вы нажимаете ввод в терминале)Это будет записывать каждую команду в историю файл как это оформлено.
Результат
Теперь любой новый терминал, который вы открываете, будет иметь историю других терминалов без необходимости
exit
эти другие терминалы. Это мой любимый рабочий процесс.Больше точности
Допустим (по какой-то причине) у вас есть два терминала, которые вы используете одновременно, и вы хотите, чтобы история отражалась между ними для каждой новой команды.
Основным недостатком здесь является то, что вам может потребоваться нажать Enter, чтобы повторно запустить PROMPT_COMMAND, чтобы получить последнюю историю из противоположного терминала.
Вы можете понять, почему этот более точный вариант, вероятно, излишний, но он подходит для этого варианта использования.
источник
Чтобы сохранить историю Bash в файл:
Он экспортирует историю в файл с именем history.txt. Затем вы можете просмотреть его в своем любимом редакторе.
Ответ скопирован с http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/
источник
Там является способ сохранить всю историю Bash в отдельный файл , но если вы пытаетесь использовать механизм истории и по какой-то причине он не сохраняет всю вашу историю, это другая проблема.
Сохранять всю свою историю в отдельный файл всегда, независимо от того, что происходит с терминалом
Сценарий, представленный здесь делает трюк.
Рассказать историю команды "Сохранить сейчас!" при нажатии X в окне виртуального терминала
Первое, что вы должны понять, какой механизм использует ваш эмулятор виртуального терминала, чтобы убить
bash
процесс, когда он выходит? - Это будет зависеть от того, какой именно эмулятор терминала вы используете.Есть несколько вариантов, и все они связаны с Сигналы UNIX ,
SIGTERM, SIGINT, SIGQUIT: поведение по умолчанию, когда Bash получает один из этих сигналов в интерактивном режиме, - игнорировать его, поэтому наверное не то
SIGHUP: этот сигнал обычно заставляет Bash корректно завершать работу и выполнять очистку, но я не уверен, что эта «очистка» подразумевает сохранение файла истории. Вероятно, нет.
SIGKILL, SIGSTOP: Bash не может игнорировать эти сигналы как процесс пользовательского пространства. Ядро может принудительно убить или остановить процесс в любое время, используя эти сигналы. Если ваш эмулятор VT отправляет один из них, мы не можем его перехватить и что-то сделать перед выходом, так что вам не повезло.
Несколько ссылок: ServerFault вопрос 337123
Unix вопрос 6332
Интерактивное использование истории в руководстве по GNU Bash
источник