Поиск по сайту:
В конце концов, не скажешь ничего уже, что не было б другими раньше сказано (Теренций).

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

28.10.2019

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

В этой статье мы поговорим о команде 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

 

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

history -5

 

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

Введите !! для выполнения предыдущей команды:

!!

 

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

sudo !!

 

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

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

^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 для получения дополнительной информации о расширении history, модификаторах и обозначениях.

 

По умолчанию при запуске нового сеанса 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

 

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Спасибо!

Теперь редакторы в курсе.