Запускаем и ищем предыдущие команды в Linux

История команд в Linux Работу в командной строке можно сделать немного эффективнее и быстрее, если знать несколько простых хитростей. Рассмотрим, как быстро запускать предыдущие команды, как выполнять поиск по истории команд.

Повторный запуск команды без указания аргументов. Используем «!»

!команда — используется для выполнения команды с аргументами, которые использовались при последнем запуске.

Предположим, мы выполняем какие-нибудь команды и дополняем их аргументами. Например, мы решили отредактировать файл myfile.txt в текстовом редакторе nano. Для этого мы выполняем:

nano /home/pingvinus/path/to/file/myfile.txt

Далее мы можем выполнять еще какие-нибудь команды, затем снова хотим выполнить nano, чтобы открыть в нем файл myfile.txt. Мы можем воспользоваться волшебным «!». Для этого достаточно написать восклицательный знак и без пробела название команды:

!nano

В результате будет вызвана команда nano с теми аргументами, с которыми она вызвалась последний раз, то есть в нашем случае !nano будет аналогично вызову nano /home/pingvinus/path/to/file/myfile.txt.

Выполнение предыдущей команды. Используем «!!»

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

Про два восклицательных знака я уже рассказывал. Например, вы вызвали команду:

apt-get install leafpad

И забыли написать в начале sudo. Чтобы не перепечатывать всю команду, можно выполнить:

sudo !!

Отмечу, что !! можно использовать прямо внутри текста команды. Например, мы перейдем в домашнюю директорию пользователя pingvinus:

cd /home/pingvinus

А теперь войдем в папку /home/pingvinus/Downloads вот таким образом:

!!/Downloads

Поиск по истории команд. Команда history

history — поиск по истории команд — предназначена для вывода истории команд, поиска по ним и быстрого запуска предыдущих команд.

Если мы выполним history, то на экран будет выведен список последних введенных вами команд:

$ history
...
139 leafpad pigvinus.txt
140 sudo apt-get install gedit
141 pwd
142 cd /home/pingvinus

Каждая команда пронумерована. Чтобы вызвать какую-нибудь команду из списка достаточно выполнить в командной строке: !номер. Например выполним команду под номером 139:

!139

Можно указать номер с минусом. Например, выполнив !-2 мы выполним пред-предыдущую команду. Выполнив, !-1 мы выполним предыдущую команду, это эквивалентно команде !!, описанной выше.

Для поиска по истории можно воспользоваться утилитой grep:

history | grep gedit

У команды history есть еще несколько дополнительных возможностей. Почитать руководство по history можно, выполнив man history.

Поиск по истории. Сочетание клавиш Ctrl+R

Ctrl+R — сочетание клавиш, которое используется для вызова «интерактивного» поиска по истории команд.

Нажмите Ctrl+R, находясь в командной строке. В результате на экране отобразится приглашение к поиску команды:

(reverse-i-search)`':

Начинайте вводить начальную часть или середину команды, которую вы ищете. То, что вы вводите будет заключено в кавычки, а после значка двоеточия вам будет предложена команда, найденная в истории команд, которая максимально удовлетворяет поиску. Например, я нажал Ctrl+R и начал вводить id-, и нашлась команда, содержащая символы id-:

(reverse-i-search)`id-': git clone https://github.com/id-Software/DOOM-3.git
11.12.2015yuriy6

Комментарии

Александр
11.12.2015, 12:27
Видимо автор не знаком с горячими клавишами командной строки и не в курсе, что к примеру есть /etc/inputrc
Активный
11.12.2015, 12:46
Откуда такой вывод?
Александр
11.12.2015, 12:51
Ознакомьтесь с настройкой горячих клавиш в Linux и доступном функционале, и Ваш вопрос про вывод отпадёт сам собой.
Активный
11.12.2015, 12:55
Видимо вы не очень понимаете, что сценарии использования командной строки могут быть разные.
Александр
11.12.2015, 13:11
Горячие клавиши вывода предыдущей команды дают следующие преимущества:
1. Мы видим отображаемую команду, которая необходима для выполнения, что обеспечит дополнительный контроль вводимых данных, а также возможность редактирования;
2. Данная заметка предназначена для ускорения работы системного администратора/пользователя, но является альтернативным вариантом, т.к. ввод восклицательных знаков увеличивает количество операций и повышает шансы ошибиться (см. пункт первый)
К примеру в Linux и во FreeBSD используются разные сочетания горячих клавиш для поиска команд в истории. При вводе начальных букв команды можно сузить поиск среди тех строк, которые начинаются на указанные в начале символы.
Alex
02.08.2016, 20:11
Здоровски! Ctrl-R облегчило жизнь :)

Написать комментарий

Ваше имя:
Текст:
Вы не зарегистрированы: комментарий будет опубликован только после просмотра администратором сайта.