Найти в Дзене

Linux. Используем историю команд. history.

Все команды, которые вы вводите в терминале, сохраняются в файле с именем .bash_history. По умолчанию, в нем хранится 500 последних команд, но эту цифру можно менять. Давайте разберемся, какие преимущества нам это дает.

Историю можно посмотреть разными способами, можно так

[user@server~]$ cat ~/.bash_history

Но лучше для этого использовать команду history. Эта команда выведет последние 500 использованных команд. Но еще лучше смотреть таким образом

[user@server~] history | less

теперь можно по истории команд очень удобно перемещаться. Еще можно использовать grep для поиска в истории по определенным критериям.

[user@server~] history | grep test
35 mkdir test
59 history | grep test

Здесь 35 и 59 - это порядковый номер записи. Зная этот номер, можно использовать следующую запись, чтобы повторно выполнить данную команду.

[user@server~] !35

и строка будет автоматически заменена на mkdir test. Это, кстати, тоже еще один вид подстановки.

bash поддерживает и поступательный поиск по истории команд. Для того, чтобы его задействовать надо нажать Ctrl+R. Строка приглашения поменяется

(reverse-i-search)`':

Если начать вводить символы искомой строки, то можно увидеть как система автоматически начнет подставлять команды, соответствующие поиску. Для того, чтобы выполнить эту команду нажмите Enter. Так же можно скопировать команду комбинацией клавиш Ctrl+J. Выйти из поиска можно комбинациями клавиш Ctrl+G или Ctrl+C.

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

Ctrl+P - Переход к предыдущей записи в истории. Эффект такой же, как и от стрелочки вверх.
Ctrl+N - Переход к следующей записи в истории. Действует так же как стрелка вниз.
Alt+< - Переход к первой записи в списке истории.
Alt+> - Переход к последней записи в истории
Ctrl+R - Поиск по истории
Ctrl+O - Выполнить текущую команду в списке истории и перейти к следующей. Удобно, если надо выполнить последовательность команд из списка истории.

Ну и, как мы говорили выше, используем подстановку с помощью !


!! -
Повторяет последнюю команду. Очень удобно, например, когда вы забыли указать sudo в предыдущей команде. Можно исправить быстро предыдущий вывод так:

[user@server~]$ sudo !!

!число - Повторяет команду из записи с указанным номером. Можно использовать с отрицательными числами, тогда будет выполнена та команда, которая была введена указанное количество строк назад. Например,

[user@server~]$ !-3

Такой вызов выполнит команду, которая была использована 3 вызова назад.

Заключение.

Вот такой полезный инструмент как ведение истории ввода команд. Сделали еще небольшой шажок навстречу к командной строке. Советую регулярно пользоваться этими приемами. Пускай сначала это будет у вас занимать дополнительное время для поиска того или иного способа, но постепенно запомнится и отработается до автоматизма. А это уже плюс к драгоценному времени, которое, как говорится, деньги.