Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [71]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [40]
Python [3]
Магнитольное [44]
Commodore64 [15]
Игровые приставки [2]


 
Дневник (2019 » Май » 28 в 08:49)
GNU/Linux Эффективная работа с историей введённых команд

$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


Ссылки:

Категория: GNU/Linux | Просмотров: 524 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 3.

03.01.2020 12:50
1 harushima
0  
head $HISTFILE – вывести первые 10 строк history
tail $HISTFILE – вывести последние 10 строк history


03.01.2020 14:41
2 harushima
0  
export HISTCONTROL=ignoreboth:erasedups:ignorespace

https://www.shellhacks.com/ru/tune-command-line-history-bash/


16.01.2020 18:21
3 harushima
0  
Где в мануалах про хистори:
man bash
/history

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous

Календарь
«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 55
Гостей: 55
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы