$HISTFILE Работа с историей команд терминала. Удаление дублей, синхронизация истории с разными вкладками терминала.
История введённых в терминале команд хранится в файле ~/.bash_history доступна по имени переменной $HISTFILE. Просмотреть текущий путь: echo $HISTFILE
За объём хранимой в истории информации отвечают две переменные окружения: HISTFILESIZE и HISTSIZE Просмотреть их лимиты можно так: echo $HISTFILESIZE $HISTSIZE
Или косвенным методом, подсчитав количество строк в истории:
history | wc -l
Для того что бы изменить ограничение необходимо в файл ~/.bashrc добавить следующие строки:
export HISTFILESIZE=999999 export HISTSIZE=999999
Для сохранения и обновления команд введённых в другой сессии (несколько вкладок в терминале) в ~/.bashrc необходимо добавить:
PROMPT_COMMAND="history -a; history -n"
Показать историю команд, аналогично cat ~/.bash_history: history
Очистить память от истории команд.
history -c
Записать изменения истории введённых команд в ~/.bash_history
history -w
Загрузить в сеанс историю команд из файла $HISTFILE history -r $HISTFILE
Дописать команды, введенные в память текущей сессии bash, в конец файла $HISTFILE history -a Удалить запись 22 из истории и записать изменения в $HISTFILE
history -d 22 -w
Добавить в память строки истории, еще не прочитанные с начала текущего сеанса Bash из файла $HISTFILE.
history -n
Выполнить команду по её номеру в history. Очень удобно: !66
Выполнить предыдущую команду:
!!
За длительное время в истории команд может накопиться много дублей. Удалить их можно следующей строкой: cat $HISTFILE | awk '!($0 in a) {a[$0];print}' > $HISTFILE.tmp && mv -f $HISTFILE.tmp $HISTFILE Однако тут есть нюанс - портится русская кодировка. Исправленный вариант (в одну строку!): history | wc -l && history -w && awk '!x[$0]++' $HISTFILE > .history.undup && mv -fv .history.undup $HISTFILE && history -c && history -r && history | wc -l
Ссылки:
|