Запускаем и ищем предыдущие команды в Linux. Linux статьи
Написать статью
Войдите, чтобы писать статьи

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

8

История команд в 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
Лайков: 0
войдите, чтобы ставить лайки
8
  • Опубликовано: 11.12.2015

Комментарии

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

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

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила