Android

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

HakTip - Bash History Tricks

HakTip - Bash History Tricks

Оглавление:

Anonim

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

Как правило, 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

Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.

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

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