Многие задачи в терминале Linux мы выполняем настолько часто, что перестаем искать более удобные способы их реализации. Существует несколько встроенных инструментов, которые позволяют значительно сократить количество нажатий клавиш и упростить рутинные операции в консоли Bash и Zsh.

Быстрое исправление и повтор команд
Одной из самых распространенных проблем является необходимость повторить команду с правами суперпользователя. Вместо того чтобы перепечатывать длинную строку, можно использовать конструкцию !!, известную как расширение истории. Ввод этого сочетания заставляет оболочку мгновенно вспомнить и выполнить последнюю введенную команду. Существует и ряд других полезных комбинаций:
- !$ — вставляет последний аргумент предыдущей команды. Например, если вы создали папку командой mkdir project-notes, то cd !$ позволит мгновенно перейти в нее.
- !^ — извлекает первый аргумент предыдущей команды.
- !* — извлекает все аргументы предыдущей команды.
- ^old^new — исправляет опечатку в предыдущей команде и выполняет ее заново. Например, ^pyhton^python исправит ошибку в имени исполняемого файла.
- Alt+. — интерактивный аналог !$, вставляющий последний аргумент в командную строку для проверки перед нажатием Enter.
- !:number — извлекает аргумент по его порядковому номеру (позиции начинаются с самой команды, которая имеет индекс 0).
Поиск по истории через Ctrl+R
Пользователи Linux часто злоупотребляют клавишей со стрелкой «Вверх» для поиска старых команд, что становится крайне неудобно, если нужная операция была выполнена давно. Комбинация Ctrl+R запускает функцию обратного инкрементального поиска (Reverse-i-search).
После нажатия Ctrl+R достаточно ввести любую часть искомой команды, и Bash начнет искать ее в истории в обратном порядке. При повторном нажатии Ctrl+R вы перейдете к более раннему совпадению. Как только нужная команда найдена, достаточно нажать Enter для запуска или Esc для редактирования текста в строке перед выполнением.

Создание структур папок с помощью фигурных скобок
Фигурная скобка — это мощный инструмент для генерации списков строк или последовательностей. Использование расширения скобок (brace expansion) позволяет создавать сложные файловые структуры одной строкой. Важно помнить, что внутри скобок не должно быть пробелов.

Примеры использования:

- mkdir -p project/{src,docs,assets} создает родительскую папку и три подпапки внутри нее.
- cp config.yaml{,.bak} позволяет быстро создать резервную копию файла.
- touch notes_{01..12}.md генерирует двенадцать пронумерованных файлов за один раз.
Мониторинг изменений командой watch
Утилита watch незаменима, когда нужно следить за выводом команды в динамике. Например, для контроля использования оперативной памяти можно запустить watch -d free -m. По умолчанию команда обновляет вывод каждые две секунды, а флаг -d подсвечивает изменения в терминале. При необходимости флаг -g позволяет завершить работу команды при обнаружении изменений. Утилита watch входит в пакет procps-ng, который предустановлен в большинстве дистрибутивов Linux.

Дополнительные возможности расширения истории
Механизм расширения истории в Bash предоставляет гибкие инструменты для манипуляции аргументами, выходящие за рамки простых быстрых повторов. Хотя синтаксис !:number требует определенной практики для запоминания позиций, он становится незаменимым инструментом, когда нужно переиспользовать конкретные части сложных команд. Важно помнить, что при отсчете позиций 0-й индекс всегда закреплен за самой командой, поэтому первый аргумент будет иметь индекс 1, второй — индекс 2 и так далее.
Особенности работы с обратным поиском
Хотя поиск через Ctrl+R часто называют самым быстрым способом навигации по истории, стоит учитывать нюанс: если первое найденное совпадение вас не устраивает, не нужно удалять введенный текст. Простое повторное нажатие Ctrl+R последовательно перебирает все более ранние команды в истории, содержащие указанную подстроку. Этот метод значительно эффективнее, чем «залипание» на клавише со стрелкой вверх, и позволяет экономить время в сессиях, где история команд насчитывает сотни записей.

Расширение фигурных скобок: советы по применению
Функция генерации последовательностей внутри { } работает до того, как команда будет передана на выполнение оболочке. Этот механизм позволяет создавать целые «деревья» каталогов или пакеты файлов с именами по шаблону в одну строку. Например, конструкция touch notes_{01..12}.md демонстрирует мощь генерации последовательностей (от 01 до 12), что невозможно сделать с такой же легкостью стандартными средствами без циклов. Главное правило, которое предотвращает ошибки парсинга: никогда не оставляйте пробелы внутри фигурных скобок, так как это нарушает логику расширения, и Bash будет воспринимать содержимое как обычные строки, а не как перечисление.

Мониторинг ресурсов в режиме реального времени
Утилита watch — это не просто средство визуализации, а полноценная система контроля изменений. Если вам нужно следить за состоянием системы в реальном времени, флаг -d становится ключевым, так как он подсвечивает любые различия между итерациями, позволяя мгновенно заметить активность. Примечательно, что эта утилита не является встроенной функцией оболочки или частью ядра Linux, а представляет собой самостоятельный инструмент из пакета procps-ng. Использование флага -g (exit-on-change) открывает дополнительные возможности для автоматизации скриптов: команда автоматически завершит выполнение, как только в выводе произойдет изменение, что удобно для мониторинга завершения процессов или появления определенных файлов.

В конечном счете, освоение подобных «скрытых жемчужин» терминала Linux — это способ сделать взаимодействие с системой менее рутинным и более продуктивным. Использование этих приемов не требует установки стороннего ПО и заставляет по-новому взглянуть на возможности командной строки, которые были доступны с самого начала, но оставались незамеченными за привычными методами работы.






