Введение / Зачем это нужно
Работа в командной строке Linux — это мощный инструмент для администрирования, разработки и автоматизации. Однако постоянный ввод команд мышкой или долгое перемещение стрелками могут замедлять ваш workflow. Сочетания клавиш (горячие клавиши) позволяют быстро навигационировать, редактировать команды и управлять процессами, экономя драгоценные секунды. После освоения этих комбинаций вы заметите значительный прирост продуктивности, особенно при длительных сессиях в терминале. В этом гайде мы разберём самые полезные сочетания для bash и zsh — самых популярных оболочек Linux.
Требования / Подготовка
Перед началом убедитесь, что у вас есть:
- Доступ к терминалу Linux — любой графический (gnome-terminal, konsole, xterm) или виртуальная консоль (Ctrl+Alt+F1-F6).
- Установленная оболочка — bash (по умолчанию в большинстве дистрибутивов) или zsh. Проверить текущую оболочку можно командой:
echo $SHELL - Базовые знания командной строки — умение вводить и выполнять простые команды.
💡 Совет: Если вы новичок, начните с bash, так как его сочетания клавиш наиболее универсальны. Zsh предлагает дополнительные фичи, но базовые комбинации совместимы.
Основные сочетания клавиш для навигации
Эти комбинации помогут быстро перемещаться по строке ввода без использования мыши или стрелок.
Навигация по символам и словам
Ctrl+A— перейти в начало строки команды.Ctrl+E— перейти в конец строки команды.Ctrl+B— переместиться назад на один символ (аналог стрелки ←).Ctrl+F— переместиться вперёд на один символ (аналог стрелки →).Alt+B— переместиться назад на одно слово (разделители: пробел, тире, slash).Alt+F— переместиться вперёд на одно слово.
⚠️ Важно: На некоторых системах клавиша
Altможет не работать в терминале по умолчанию. В этом случае используйтеEsc, нажав его передBилиF(например,EscзатемBдля перехода назад на слово).
Быстрое переключение позиций
Ctrl+XX— переключиться между началом строки и текущей позицией курсора (работает в bash и zsh при включённой опцииset -o emacs).
Пример: вы ввели длинную команду, но Need исправить начало. Нажмите Ctrl+A, внесите правки, затем Ctrl+XX — курсор вернётся туда, где вы изначально остановились.
Сочетания для редактирования команд
Эти комбинации ускоряют исправление опечаток и модификацию команд.
Удаление текста
Ctrl+U— удалить всё от курсора до начала строки.Ctrl+K— удалить всё от курсора до конца строки.Ctrl+W— удалить слово перед курсором (от текущей позиции до предыдущего разделителя).Alt+D— удалить слово после курсора (от текущей позиции до следующего разделителя).Ctrl+D— удалить символ под курсором (аналог клавишиDelete).
Вставка и отмена
Ctrl+Y— вставить (yank) последний удалённый текст (сочетанияCtrl+U,Ctrl+K,Ctrl+Wсохраняют текст в буфер).Alt+.(точка) — вставить последний аргумент предыдущей команды. Повторное нажатиеAlt+.циклически переключает аргументы из истории.Ctrl+_(илиCtrl+Shift+-) — отменить последнее изменение (аналогundo).
Пример: вы ввели cp file1.txt /path/to/destination/. Затем хотите скопировать file2.txt в то же место. Введите cp file2.txt и нажмите Alt+. — подставится /path/to/destination/.
Исправление опечаток
Alt+T— поменять местами два последних слова (полезно, если перепутали порядок).Ctrl+T— поменять местами два последних символа (для исправления перестановки букв).
Поиск и работа с историей команд
Терминал сохраняет историю всех введённых команд. Эти сочетания позволяют быстро находить и повторять их.
Обратный поиск
Ctrl+R— начать обратный поиск по истории. Начните вводить часть команды, и терминал покажет первое совпадение. Повторное нажатиеCtrl+Rищет предыдущие совпадения.Ctrl+G— выйти из поиска, сохранив найденную команду в строке.Ctrl+S— прямой поиск (может быть заблокирован в некоторых терминалах; разблокировать черезstty -ixon).
Навигация по истории
Ctrl+P(или стрелка ↑) — предыдущая команда в истории.Ctrl+N(или стрелка ↓) — следующая команда в истории.Ctrl+G— выйти из режима поиска или отменить текущий ввод.!!— выполнить последнюю команду (удобно, если забылиsudo). Пример:sudo !!.!$— использовать последний аргумент последней команды. Пример:mv file1.txt /tmp/затемcat !$откроет/tmp/.!^— использовать первый аргумент последней команды.!-2— выполнить команду, введённую два шага назад в истории.
Управление процессами
Когда процесс выполняется в терминале, эти сочетания помогают управлять им без закрытия сессии.
Ctrl+C— прервать текущий процесс (发送 SIGINT). Используйте, если команда зависла или нужно остановить.Ctrl+Z— приостановить процесс (发送 SIGSTOP) и вернуться в shell. Процесс остаётся в памяти.Ctrl+D— отправить EOF (конец файла). Если вводится в пустой строке, завершает текущую сессию shell (аналогexit).bg— возобновить приостановленный процесс в фоновом режиме.fg— возобновить приостановленный процесс на переднем плане (в текущем терминале).jobs— список всех приостановленных и фоновых задач в текущей сессии.
Пример: вы запустили sleep 1000, но Need вернуться в терминал. Нажмите Ctrl+Z, затем bg — процесс продолжит работать в фоне.
Продвинутые настройки и кастомизация
Хотя стандартных сочетаний достаточно для большинства задач, вы можете настроить свои или улучшить существующие.
Настройка bash через ~/.inputrc
Файл ~/.inputrc управляет поведением readline (библиотеки, используемой bash). Добавьте строки для новых сочетаний.
Пример: сделать Ctrl+Left/Right работающими как переход по словам (по умолчанию в некоторых терминалах они отправляют escape-последовательности).
# ~/.inputrc
"\e[1;5D": backward-word # Ctrl+Left
"\e[1;5C": forward-word # Ctrl+Right
"\e[5~": beginning-of-history # PageUp для поиска в истории
"\e[6~": end-of-history # PageDown
После сохранения файла перезапустите терминал или выполните bind -f ~/.inputrc.
Настройка zsh через ~/.zshrc
В zsh сочетания управляются через bindkey. Добавьте в ~/.zshrc:
# Пример: Ctrl+Left/Right для навигации по словам
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
# Включить emacs-режим (по умолчанию в zsh может быть vicmd-mode)
bindkey -e
Перезагрузите zsh: source ~/.zshrc.
Создание макросов
Вы можете назначить клавишу на последовательность команд. Например, в bash через ~/.inputrc:
# Ctrl+T вставить дату в формате YYYY-MM-DD
"\C-t": "date +%Y-%m-%d"
В zsh через ~/.zshrc:
bindkey "^T" insert-datetime
insert-datetime() {
LBUFFER+=$(date +%Y-%m-%d)
}
zle -N insert-datetime
Практические советы по запоминанию
- Начните с малого — выучите 5-7 самых частых сочетаний (например,
Ctrl+A,Ctrl+E,Ctrl+U,Ctrl+K,Ctrl+R). Используйте их сознательно каждый день. - Создайте шпаргалку — распечатайте таблицу сочетаний и разместите рядом с монитором. Мы подготовили для вас PDF-шпаргалку — скачайте её здесь (в реальной статье будет ссылка).
- Практикуйтесь в нерабочее время — откройте терминал и попробуйте набирать длинные команды, используя только сочетания, без мыши.
- Используйте
Ctrl+P/Ctrl+Nвместо стрелок — это привычка быстро приходит. - Не бойтесь ошибок — если случайно удалили текст,
Ctrl+Yвернёт его.
Проверка результата
После изучения гайда вы должны:
- Быстро перемещаться по длинным командам с помощью
Ctrl+A/E/B/F. - Уметь исправлять опечатки без перепечатывания (например,
Ctrl+Uдля удаления части команды). - Находить и повторять предыдущие команды через
Ctrl+Rи!!. - Управлять фоновыми задачами (
Ctrl+Z,bg,fg). - При необходимости — настроить собственные сочетания через конфиги.
Тест yourself: Откройте терминал и введите сложную команду, например:
sudo apt update && sudo apt upgrade -y
Теперь, не используя стрелок или мышь:
- Перейдите в начало строки (
Ctrl+A), удалите часть (Ctrl+K), вставьте обратно (Ctrl+Y). - Найдите команду
sudo apt updateчерезCtrl+R. - Прервите выполнение (если оно длится) через
Ctrl+C.
Если всё работает — вы на правильном пути!
Возможные проблемы
Сочетания не работают в моём терминале
- Проблема:
Alt+BилиAlt+Fничего не делают.- Решение: Вместо
AltиспользуйтеEsc, затемBилиF. Или настройте терминал на отправкуMeta-последовательностей (например, в gnome-terminal: Настройки → Клавиши → "Alt sends ESC").
- Решение: Вместо
- Проблема:
Ctrl+Left/Rightне перемещают по словам.- Решение: Настройте
~/.inputrcили~/.zshrcкак показано выше. Убедитесь, что escape-последовательности соответствуют вашему терминалу (проверьте черезcatи нажатие комбинации).
- Решение: Настройте
Конфликты с приложениями
- Проблема: В
vimилиnanoсочетания клавиш могут отличаться или перехватываться.- Решение: В
vimиспользуйтеCtrl+[вместоEsc, а для навигации по словам —W/Bв нормальном режиме. Вnanoсочетания похожи на GUI-редакторы (например,Ctrl+←). Учитывайте контекст приложения.
- Решение: В
Zsh в режиме vi
- Проблема: По умолчанию zsh может использовать режим
vi(как в vim), где сочетания другие.- Решение: Переключитесь на режим
emacs(более привычный для bash) добавлениемbindkey -eв~/.zshrc.
- Решение: Переключитесь на режим
Сброс настроек
- Если сломали конфигурацию, удалите или переименуйте
~/.inputrc/~/.zshrcи перезапустите терминал — вернутся настройки по умолчанию.
Разные терминалы
- В графических терминалах (gnome-terminal, konsole) сочетания обычно работают из коробки. В консоли (Ctrl+Alt+F1) некоторые escape-последовательности могут отличаться. Тестируйте в вашем окружении.