Содержание статьи

Повторение предыдущей команды в терминале экономит время при работе с длинными строками и сложными опциями. В Bash и Zsh для этого можно использовать стрелку вверх, что позволяет быстро вернуться к последней введённой команде без повторного ввода всех параметров.
Команда !! выполняет последнюю команду мгновенно. Это особенно удобно при необходимости повторить запуск скрипта с правами суперпользователя через sudo !!, избегая ручного набора всей строки заново.
Для точечного вызова определённой команды из истории используют !<номер> или !<текст>, что позволяет выбрать конкретное действие по номеру записи или по совпадению текста. Фильтрация через history | grep ускоряет поиск нужной команды среди сотен записей.
Сочетание Ctrl+R запускает обратный поиск по истории, отображая команды, содержащие введённый фрагмент. Это облегчает работу с часто повторяющимися строками и сложными аргументами.
Использование !$ позволяет повторить только последний аргумент предыдущей команды, что удобно для операций с файлами или директориями без полного повторного ввода пути.
Использование стрелки вверх для повторного вызова команды
Стрелка вверх в терминале позволяет последовательно просматривать историю команд, начиная с самой последней. Это ускоряет исправление ошибок и повторный запуск команд без ручного набора всех параметров.
При нажатии стрелки вверх курсор подставляет предыдущую команду в текущую строку, после чего её можно отредактировать перед выполнением. Использование нескольких нажатий позволяет вернуться к более ранним командам в порядке их ввода.
Для эффективной работы с длинными командами полезно сочетать стрелку вверх с клавишами Ctrl+A и Ctrl+E, которые перемещают курсор в начало и конец строки соответственно. Это упрощает редактирование аргументов без полного повторного ввода.
Функция стрелки вверх поддерживается большинством современных оболочек Bash, Zsh и их терминальных эмуляторов, включая стандартный терминал Linux, macOS Terminal и Windows с WSL. История команд хранится в файле .bash_history или аналогичных конфигурациях оболочки, что позволяет обращаться к ранее выполненным командам между сессиями.
Команда !! для мгновенного повтора последней команды
Команда !! выполняет последнюю введённую команду без необходимости её повторного набора. Это сокращает время при повторных операциях и минимизирует ошибки при наборе длинных строк.
Часто !! используют вместе с sudo для запуска команд с правами суперпользователя: sudo !! автоматически повторяет предыдущую команду с добавлением sudo, что удобно, если первоначальный запуск завершился отказом из-за прав.
Команда работает в Bash, Zsh и большинстве терминалов Linux и macOS. Она выполняет точную копию последней строки, включая все аргументы и параметры, что делает её полезной при повторении операций с файлами, пакетами или сетевыми запросами.
Для контроля перед выполнением можно использовать echo !!, чтобы сначала отобразить команду в терминале. Это помогает проверить корректность строки и избежать непреднамеренного запуска сложных или рискованных операций.
Повтор команды с модификацией через ! и !

С помощью !<номер> и !<текст> можно вызвать конкретную команду из истории, не повторяя все строки вручную. !<номер> выполняет команду с указанным номером в списке history, а !<текст> повторяет последнюю команду, начинающуюся с заданного текста.
Для наглядного примера удобно использовать таблицу с командами и их вызовом:
| Команда в истории | Вызов через ! | Результат |
|---|---|---|
| apt update | !2 | Выполняет команду с номером 2 из history |
| ls -la /var | !ls | Повторяет последнюю команду, начинающуюся с «ls» |
| nano /etc/hosts | !nano | Открывает последний файл через nano |
| git status | !git | Выполняет последний git-команду |
Использование этих операторов ускоряет работу с повторяющимися действиями и снижает риск ошибок при наборе длинных команд. Команды можно комбинировать с другими конструкциями, например sudo !<текст> или !<номер> > output.txt, для автоматизации задач.
Использование истории команд с history и grep
После нахождения команды через grep её можно повторить по номеру с помощью !<номер>. Например, !256 выполнит команду с номером 256 из истории. Это удобно для повторного запуска сложных команд или скриптов без полного ручного набора.
Для постоянного хранения истории между сессиями Bash использует файл .bash_history. Увеличение числа сохраняемых записей через переменную HISTSIZE позволяет хранить больше команд, а HISTIGNORE помогает исключать повторяющиеся или ненужные строки.
Применение сочетаний Ctrl+R для поиска прошлых команд

Сочетание Ctrl+R активирует обратный поиск по истории команд в терминале. Оно позволяет находить команды по любому фрагменту текста без просмотра полного списка history.
Алгоритм использования:
- Нажмите Ctrl+R, появится строка поиска (reverse-i-search):
- Начните вводить ключевое слово или часть команды.
- Терминал автоматически покажет последнюю совпадающую команду.
- Для перехода к предыдущим совпадениям нажимайте повторно Ctrl+R.
- После нахождения нужной команды нажмите Enter для выполнения или Ctrl+E/Ctrl+A для редактирования.
Дополнительные рекомендации:
- Для редактирования найденной команды используйте стрелки влево/вправо после Ctrl+R.
- Комбинируйте с !$, чтобы повторить последний аргумент найденной команды.
- Обратный поиск работает в Bash, Zsh и большинстве эмуляторов терминала на Linux и macOS.
- Регулярное использование сокращает время на повторение длинных или сложных команд.
Повтор команды с аргументами предыдущей команды через !$

Конструкция !$ подставляет только последний аргумент предыдущей команды, что ускоряет работу с файлами, каталогами и параметрами без полного повторного ввода.
Примеры использования:
- Если была выполнена команда cp /home/user/file.txt /tmp/, следующая строка ls !$ развернётся как ls /tmp/ и покажет содержимое целевой директории.
- При работе с архивами: tar -czf backup.tar.gz /var/log и затем ls !$ отобразит ls /var/log.
- Комбинация с sudo позволяет повторять действия с правами суперпользователя: sudo cp !$ /backup/ скопирует последний аргумент предыдущей команды в указанный каталог.
Использование !$ минимизирует ошибки при повторном наборе длинных путей или сложных аргументов, повышая скорость работы с терминалом в Bash и Zsh.
Вопрос-ответ:
Как повторить последнюю команду без её полного ввода?
Для этого в терминале Bash и Zsh используют команду !!. Она выполняет последнюю введённую строку. Например, если предыдущая команда была apt update, ввод !! повторит её автоматически.
Можно ли выбрать конкретную команду из истории по номеру?
Да, каждая команда в истории имеет свой порядковый номер, который выводится через history. Команда !<номер> выполняет команду с указанным номером. Например, !23 запустит команду под номером 23.
Как использовать последний аргумент предыдущей команды в новой?
Конструкция !$ подставляет последний аргумент предыдущей команды. Если была команда cp /home/user/file.txt /tmp/, ввод ls !$ выполнит ls /tmp/, показывая содержимое целевой папки.
Как искать нужные команды по ключевым словам?
Используйте history | grep ключевое_слово, чтобы отобразить только команды, содержащие заданный текст. После этого найденную команду можно повторить через !<номер> или отредактировать перед запуском.
Что делает Ctrl+R в терминале и как им пользоваться?
Нажатие Ctrl+R активирует обратный поиск команд по истории. Начав вводить часть команды, терминал покажет последнее совпадение. Повторные нажатия Ctrl+R переходят к более ранним совпадениям. После нахождения команды можно нажать Enter для выполнения или отредактировать её.
Как повторить команду с изменением части аргументов без полного набора строки?
Для этого можно использовать конструкции !<текст> или !$. !<текст> повторяет последнюю команду, начинающуюся с указанного текста, а !$ подставляет только последний аргумент предыдущей команды. Например, если была команда cp /home/user/file.txt /tmp/, строка mv !$ /backup/ переместит файл в новую директорию, используя предыдущий аргумент, без полного повторного набора пути.
