Команда History в Linux (Bash History)

History Command in Linux (Bash History)

4 Февраля 2020 | Терминал

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

Команда History в Linux (Bash History)

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

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

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

В простейшей форме, когда вызывается без каких-либо параметров или аргументов, 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 относится к самой последней команде, начинающейся со слова.

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

history | less


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

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 -chistory -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отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали до того, что вы не можете вспомнить.

    Комментарии

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

Загрузка комментариев...