История команд в Linux (Bash History)

Команда истории Linux

Если вы проводите много времени в командной строке, просмотр истории ранее выполненных команд может оказаться полезной функцией, которая облегчит вашу повседневную работу и повысит производительность.

В этой статье мы поговорим о команде history , которая позволяет просматривать список ранее выполненных команд, осуществлять поиск по списку и управлять файлом истории.

Использование history команд и расширений истории

history — встроенная функция оболочки, и её поведение может немного различаться в зависимости от оболочки. Мы рассмотрим встроенную версию history в Bash.

В простейшем виде, при вызове без каких-либо опций или аргументов, команда history отображает весь список истории с номерами строк.

 history
 ... 467 git push 468 tail -f var/logs/error 469 nano +22,5 functions.sh 470 source project-env/bin/activate 471 history

Ввод !n выполнит n-ю команду из списка истории, а !-n команду на n строк назад. В следующем примере мы выполняем команду на строке 467 :

 !467

Другой способ выполнить команду — использовать расширение !word . word ссылается на последнюю команду, начинающуюся с «word».

Обычно history отображается много строк, которые не помещаются на экране. Чтобы просматривать вывод постранично, перенаправьте его в программу-постраничный просмотрщик, например, команду more или less :

 history | less

Чтобы отобразить последние n строк, передайте это число в качестве аргумента команды. Например, чтобы просмотреть только последние пять строк из списка истории, введите:

 history -5

Для навигации по записям в списке используйте клавиши со стрелками up и down . Когда искомая команда появится на экране, нажмите Enter , чтобы выполнить её.

Введите !! , чтобы выполнить предыдущую команду:

 !!

Это особенно полезно, когда вы забываете добавить команду sudo , и вместо того, чтобы вводить команду заново, вы можете ввести:

 sudo !!

!-1 то же самое, что и !! и выполняет последнюю команду из списка истории, !-2 — предпоследнюю и т. д.

Расширение ^word1^word2^ позволяет повторно выполнить последнюю команду, заменив «word1» на «word2». Если вы случайно ввели sduo command вместо sudo command вы можете повторить команду, используя правильное слово:

 ^sduo^sudo^

Используйте команду grep для фильтрации вывода. Например, чтобы просмотреть все команды, содержащие «nano», выполните:

 history | grep nano
 302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22,5 functions.sh

Теперь, если вы хотите повторно запустить команду nano setup.py просто введите:

 !356

Другой способ поиска по истории команд — нажать Ctrl-R . Запрос изменится на следующий, и вы сможете начать поиск ранее выполненной команды.

 ( reverse-i-search ) ` ' :

Оболочка отобразит соответствующую строку. Чтобы перейти к следующему совпавшему предложению, нажмите Ctrl-R ещё раз.

Дополнительную информацию о расширении истории , модификаторах и указателях можно найти в руководстве Bash.

Сохранение списка истории

По умолчанию при запуске нового сеанса Bash считывает список истории из файла .bash_history . Список команд, выполненных в текущем сеансе, хранится в памяти и сохраняется в файле при его закрытии.

Если открыто несколько сеансов оболочки, сохраняется история только того сеанса, который был закрыт последним.

Опция -a позволяет сохранить текущий список истории сеанса в файле .bash_history :

 history -a

Опция -w записывает полный список истории в файл истории.

 history -w

Очистка истории

Команда history позволяет очистить весь список истории или удалить определенные части.

Чтобы очистить список истории, используйте опцию -c :

 history -c

Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте опцию -d .

Например, чтобы удалить строки между 365 и 375 (включая эти строки), введите:

 history -d 365 375

Если указать в опции -d только одно число, команда удалит указанную строку.

При использовании отрицательного целого числа отсчет строк ведется от конца списка истории.

Приведённые выше команды очищают список истории, хранящийся в памяти, но не удаляют записи из файла .bash_history на диске. Чтобы очистить файл, необходимо записать список истории в файл:

 history -c history -w

Изменение истории поведения

Поведение истории Bash можно определить с помощью нескольких переменных окружения . При изменении поведения истории задайте переменные в ~/.bashrc или любом другом конфигурационном файле, который загружается при входе пользователя в систему.

По умолчанию Bash сохраняет 500 строк в списке истории команд. Переменная HISTSIZE позволяет изменить это значение. Чтобы установить значение 10000, добавьте следующую строку в файл .bashrc :

 HISTSIZE = 10000

Переменная HISTCONTROL принимает список значений, разделенных двоеточиями, которые определяют, как команды сохраняются в списке истории:

  • ignorespace — команды, начинающиеся с пробела, не сохраняются в списке истории.
  • ignoredups — дублирующиеся команды не сохраняются.
  • ignoreboth — это сокращение, включающее в себя как ignorespace , так и ignoredups .
 HISTCONTROL = ignoreboth

Если установлена переменная HISTTIMEFORMAT , Bash добавляет метку времени выполнения команды в каждую строку.

Например, если вы установите:

 HISTTIMEFORMAT = "%F %T: "

История будет отображаться в следующем формате:

 413 2019-10-27 21:13:07: sudo nano /etc/hosts

Заключение

Команда history отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали ранее и которую не можете вспомнить.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

исторический терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *