Хотя сервер один и тот же. И не увидишь ты эту команду в истории, пока не завершишь сессию в первом терминале, либо не сделаешь определенный финт ушами. Пиздец неудобно!
✔️ Финт ушами в первом терминале:
history -a
history -c
history -r
a = пишем текущую историю сессии в файл
с = очищаем текущую сессию
r = перезагружаем файл истории
Теперь если перезайти во второй терминал, то увидишь там команду ls -la, то есть история как бы синхронизировалась. Это хорошо, но недостаточно хорошо!
Как это можно автоматизировать?
Добавляем в .bashrc:
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
ignoredups:erasedups
1. Команды, вводимые несколько раз, не дублируются в истории.
2. Повторная команда заменяет все предыдущие в истории.
shopt -s histappend
Эта команда включает опцию histappend, которая добавляет новые команды в конец файла истории (~/.bash_history) при завершении сессии, вместо перезаписи файла. Это позволяет сохранить команды из разных сессий и объединить их в единую историю.
А кишка PROMPT_COMMAND = Назначает значение переменной PROMPT_COMMAND, которая используется в bash для выполнения команды перед отображением командной строки (приглашения).
Теперь твоя история команд будет автоматически синхронизирована с файлом истории. Это полезно, если ты работаешь с несколькими терминалами и хочешь иметь актуальную историю без хуйни.
А еще есть фича:
declare -r PROMPT_COMMAND="echo 'привет осёл'"
После выполнения любой команды, на экран будет выводиться «привет осёл». Эту команду можно заменить на любую другую, например триггерить bash скрипт, который будет отправлять введенные команды сразу тебе в телеграм. Ну или забить exit 1 по приколу.
Как взаимодействовать с телегой через консольку, писал в этом посте. А про облачную синхронизацию истории упоминал в этом посте.
Ёмко? Ёмко! Изучай!
tags: #linux #bash
—
🔔 @bashdays