3.3 Базовые приёмы работы в терминале

В этом параграфе мы узнаем, как значительно ускорить работу в терминале и сделать её комфортнее.

Эти возможности не связаны напрямую с конкретными командами, но помогают экономить время, меньше печатать и лучше контролировать результат на экране.

Мы разберём автодополнение, работу с историей, редактирование строк, полезные горячие клавиши и создание алиасов.

Ключевые вопросы параграфа

  1. Как работает автодополнение и чем оно помогает?
  2. Как просматривать и использовать историю команд?
  3. Как редактировать введённую строку?
  4. Что такое алиасы и зачем они нужны?

Автодополнение

Ранее мы уже познакомились с несколькими командами, научились их вводить и выполнять, получать вывод на экран.

У вас могло сложиться впечатление, что каждый раз набирать команду с опциями и аргументами — это не намного удобнее, чем работать с мышкой и графическим интерфейсом.

Но в терминале не обязательно набирать команды и пути целиком. Почти всегда можно использовать автодополнение с помощью клавиши Tab.

Попробуйте ввести команду hostname, но в середине нажмите клавишу Tab:

1alice@ubuntu:~$ hostna<Tab>

Терминал дополнит её до hostname.

1alice@ubuntu:~$ hostname

А если вариантов окончания набранной команды несколько — клавиша Tab выведет все доступные опции:

1alice@ubuntu:~$ host<Tab>
2host         hostid       hostname     hostnamectl

Это очень удобно, если вы помните начало команды, но не полное её написание.

Автодополнение работает не только для команд, но и для путей и имён файлов.
Например, если начать вводить имя файла и нажать Tab — терминал дополнит имя файла при условии, что файл существует в вашем рабочем каталоге или по тому пути, что вы начали вводить.

1alice@ubuntu:~$ ls /e<Tab>
2alice@ubuntu:~$ ls /etc

Автодополнение работает даже для опций!

1alice@ubuntu:~$ ls --h<Tab>
2--help                --hide-control-chars  --hide=               --human-readable      --hyperlink

Это значительно экономит время и снижает количество ошибок при наборе.

История команд

Ещё одна очень полезная функция терминала — это история команд. Терминал запомнил все команды, которые вы вводили. Это позволяет не набирать их заново — достаточно вызвать последнюю команду или найти нужную.

Прежде всего попробуем пролистать наши последние команды, для этого нужно использовать стрелки и .

1alice@ubuntu:~$ <↑>
2alice@ubuntu:~$ ls -al<↑>
3alice@ubuntu:~$ ls --help<↑>
4alice@ubuntu:~$ date --help

Стрелка листает команды в обратную сторону, к самой недавней.

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

Чтобы вывести историю команд в виде нумерованного списка, можно воспользоваться командой history:

1alice@ubuntu:~$ history
1    1  clear
2    2  echo "Hello Linux!"
3    3  exit
4    4  clear
5    5  exit
6    6  clear
7    7  type -a ls
8    8  which ls
9    9  type -a date
10   10  which date

Команду из истории можно быстро выполнить, набрав в терминале ! и номер команды в истории:

1alice@ubuntu:~$ !8
2which ls
3/usr/bin/ls

И наконец, если вы хотите очистить историю команд (например, вы выполняли что-то приватное и вставили пароль в команду), это можно сделать при помощи команды history с опцией -c:

1alice@ubuntu:~$ history -c

Быстрый повтор

Мы научились быстро выполнять команду из истории при помощи !, но есть и другие полезные комбинации:

  • !! — выполнить последнюю команду.
  • !$ — подставить последний аргумент предыдущей команды.
  • !ls — выполнить последнюю команду, начинавшуюся с ls.

Если набрать !! — выполнится самая недавняя команда:

1alice@ubuntu:~$ hostname
2ubuntu
3alice@ubuntu:~$ !!
4hostname
5ubuntu

Команда !$ подставит последний аргумент недавней команды:

1alice@ubuntu:~$ echo "Hello!"
2Hello!
3alice@ubuntu:~$ echo !$
4echo "Hello!"
5Hello!

Здесь, как вы могли заметить, !$ подставило "Hello!.

Команда !<строка> выполнит последнюю команду, которая начинается с указанной строки.
Например, мы помним, что выполняли команду hostname, поэтому можем набрать начало команды !host и нажать Enter:

1alice@ubuntu:~$ !host
2hostname
3ubuntu

Действительно, последней командой, которая начинается с host, была команда hostname, и именно её мы и выполнили.

Важно: команды, получаемые через !, выполняются сразу и без задержки, поэтому очень легко выполнить совсем не то, что хотелось бы.

Безопасный способ использовать подстановки через ! — пользоваться предпросмотром:

1alice@ubuntu:~$ !!:p
2hostname

Модификатор :p позволил посмотреть на нашу последнюю команду, но не выполнять её сразу.

Поиск по ключевым словам

Если вы хотите найти команду, которую выполняли раньше, не обязательно листать всю историю стрелками.
Если нажать Ctrl + R и начать печатать часть команды, терминал найдёт последнее совпадение:

1(reverse-i-search)`ls': which ls
2

Повторное Ctrl + R продолжит поиск глубже в истории.

1(reverse-i-search)`ls': ls --help
2
  • Нажмите Enter, чтобы выполнить найденную команду.
  • Нажмите ещё раз Ctrl + R, чтобы перейти к более раннему совпадению.
  • Чтобы отменить поиск, используйте Ctrl + G или Ctrl + C.

Редактирование строки ввода

Печатать, а тем более редактировать команды через терминал может показаться очень неудобным занятием.
Если строка длинная — нужно долго работать клавишами-стрелками, чтобы переместить курсор в нужную точку.
Но можно значительно ускорить этот процесс.

Для этого есть сочетания клавиш, которые позволяют быстро редактировать строку без мыши.

  • Ctrl + A — перейти в начало строки.
  • Ctrl + E — перейти в конец строки.
  • Ctrl + U — удалить всё от курсора до начала строки.
  • Ctrl + K — удалить всё от курсора до конца строки.
  • Ctrl + W — удалить слово слева от курсора.
  • Alt + B — переместиться на слово назад.
  • Alt + F — переместиться на слово вперёд.

Пример: вы набрали длинную команду и заметили ошибку в начале. Вместо того чтобы стирать всё, нажмите Ctrl + A, переместитесь в начало и исправьте только то, что нужно.

Как управлять выводом и прокруткой

Иногда команды выводят слишком много строк и вывод убегает за пределы экрана. В таких случаях помогают сочетания клавиш для управления выводом и прокруткой.

  • Ctrl + S — приостановить вывод в терминале.
  • Ctrl + Q — возобновить вывод.

Эти комбинации работают прямо в момент выполнения команды. Например, если ls -R / начинает выводить тысячи строк, вы можете остановить его на месте (Ctrl + S) и потом продолжить (Ctrl + Q).

1alice@ubuntu:~$ ls -R /
Что за опция -R?

Опция -R (от англ. recursive) говорит команде ls вывести содержимое рекурсивно — начиная от корня / и по всем вложенным каталогам.

При помощи команды ls -R / мы выводим всё дерево файловой системы, включая системные каталоги, поэтому вывод получается очень длинным, и мы можем поэкспериментировать с его остановкой и возобновлением.

Чтобы остановить вывод, нажмите Ctrl + S. Чтобы продолжить — Ctrl + Q. А вовсе прекратить операцию можно уже известной нам командой Ctrl + C.

Давайте проверим знание приёмов, с которыми мы познакомились:

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Проверь себяСоедините порядковый номер со словом

Алиасы

Алиасы (англ. alias) позволяют задавать короткие имена для часто используемых команд.

Это способ сделать работу в терминале удобнее: вместо длинной команды вы набираете короткое имя.

Например:

1alice@ubuntu:~$ alias lll='ls -lh'

Теперь при вводе lll будет выполняться ls -lh.

1alice@ubuntu:~$ lll
2total 0
3-rw-rw-r-- 1 alice alice 0 Oct  1 05:19 alice.txt
4-rw-rw-r-- 1 alice alice 0 Oct  1 05:46 long-file-name.txt

Алиас — это текстовая подстановка. Когда вы печатаете команду, оболочка просто заменяет имя алиаса его содержимым, до того как команда начнёт выполняться.
То есть lll превращается в ls -lh, и только потом Bash выполняет ls.

Чем алиас отличается от переменной окружения

Может показаться, что алиасы похожи на переменные окружения, ведь синтаксис схож: имя = значение.
Однако у них совсем разное назначение.

Алиас

  • Нужен для сокращения команд.
  • Работает только в интерактивной оболочке, то есть когда вы вводите команды вручную в терминале.
  • Подставляется текстом до выполнения.
  • Не передаётся в другие процессы.

Переменная окружения

  • Нужна для хранения данных (например, путей, имён, настроек).
  • Доступна не только в оболочке, но и в запущенных из неё программах.
  • Не подставляется автоматически как команда.
  • Может влиять на поведение программ (например, PATH, HOME, LANG).
Подробнее про алиасы и интерактивную оболочку

Интерактивная оболочка — режим, когда вы вводите команды вручную в терминале.

В этом режиме Bash ждёт ваши команды, показывает приглашение ($) и реагирует на сочетания клавиш, историю, автодополнение.

Скрипты и фоновые процессы работают в неинтерактивном режиме — там алиасы не подставляются, потому что команды читаются напрямую из файла, без участия пользователя.

1# Алиас: сокращает команду
2alias ll='ls -lh'
3
4# Переменная: хранит путь
5MYDIR="/var/log"
6
7# Разница в использовании:
8ll               # выполняет ls -lh
9echo $MYDIR      # выводит на экран /var/log

Если вы создадите переменную с командой:

1alice@ubuntu:~$ LLL="ls -lh"
2alice@ubuntu:~$ $LLL

то она действительно выполнится, потому что Bash подставит текст ls -lh и интерпретирует его как команду. Но это побочный эффект: переменные не предназначены для хранения команд, это неудобно и небезопасно.

Короткая шпаргалка:

  • Алиас — для удобства ввода, переменная — для хранения данных.
  • Если вы хотите хранить настройки, пути, логины — используйте переменные.
  • Если хотите сэкономить время на длинных командах — используйте алиасы.

Запомните: алиас — это короткое имя для команды, а переменная — это коробка с текстом, которую Bash иногда превращает обратно в команду, если она стоит в начале строки и выглядит как имя команды.

Посмотреть список всех текущих алиасов можно при помощи команды alias без опций и аргументов:

1alice@ubuntu:~$ alias
1alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
2alias egrep='egrep --color=auto'
3alias fgrep='fgrep --color=auto'
4alias grep='grep --color=auto'
5alias l='ls -CF'
6alias la='ls -A'
7alias ll='ls -alF'
8alias ls='ls --color=auto'

Уже знакомая нам команда type также может подсказать, является ли введённая вами команда алиасом:

1alice@ubuntu:~$ type lll
2lll is aliased to `ls -lh'
3

Удалить алиас можно при помощи команды unalias.
Давайте удалим алиас lll, который мы создали ранее для команды ls -lh:

1alice@ubuntu:~$ unalias lll

Теперь если мы попробуем выполнить lll снова — команда не будет найдена:

1alice@ubuntu:~$ lll
2Command 'lll' not found

Давайте составим команду для создания алиаса hello, чтобы нас приветствовали в терминале по имени пользователя:

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Проверь себяРасставь слова по порядку

Практическая работа: ускоряем работу в терминале

Теперь, когда вы освоили базовые команды и знаете, как они устроены, попробуем сделать работу в терминале удобнее и быстрее.
Это упражнение поможет попрактиковаться в истории команд, редактировании строки и создании алиасов.

Шаг 1. Подготовьте терминал, очистив экран, чтобы начать с чистого листа:

1clear

Шаг 2. Выполните несколько команд подряд:

1echo "Hello"
2echo "How are you?"
3echo "Goodbye"

Теперь пролистайте историю команд стрелками и , чтобы убедиться, что терминал запомнил их.

Шаг 3. Повторите последнюю команду быстрее:

1!!

Шаг 4. Используйте поиск по истории.

  • Нажмите Ctrl + R и начните печатать слово How.
  • Терминал должен найти команду echo "How are you?".
  • Нажмите Enter, чтобы выполнить её.
  • Нажмите Ctrl + G, если хотите отменить поиск.

Шаг 5. Попрактикуйтесь в редактировании строки.

Наберите команду:

1echo "Linux — это весело"

Теперь:

  • Переместите курсор в начало строки (Ctrl + A).
  • Перейдите в конец (Ctrl + E).
  • Удалите всё от курсора до начала (Ctrl + U).

Шаг 6. Создайте алиас для быстрого приветствия.

Пусть это будет короткое имя для команды приветствия:

1alias hi='echo "Hello, $USER!"'

Теперь просто наберите:

1hi

Шаг 7. Проверьте, что алиас действительно создан.

1alias

Вы увидите список всех алиасов, включая hi.

Шаг 8. Удалите алиас.

Чтобы удалить алиас hi, воспользуемся командой unalias.

1unalias hi

Что дальше

Теперь, когда вы научились базовым приёмам работы в терминале — автодополнению, поиску по истории, редактированию и алиасам, — вы готовы перейти к теме следующего раздела: работе с файлами и каталогами.

В следующем параграфе вы узнаете:

  • Что такое файл и каталог.
  • В чём разница между абсолютным и относительным путём.
  • Как определить, где вы находитесь в файловой системе, и как перемещаться по ней.

После этого вы никогда не потеряетесь в файловой системе Linux!

А пока закрепите материал на практике:

  • Отметьте, что урок прочитан, при помощи кнопки ниже.
  • Пройдите мини-квиз, чтобы проверить, насколько хорошо вы разобрались с автодополнениями и алиасами.
  • Загляните в гайд по системе проверки, если вы здесь впервые.

Ключевые выводы по параграфу

  • В терминале не нужно печатать команды целиком — автодополнение (Tab) помогает быстро дополнять имена команд, файлов и опций.
  • История команд позволяет повторять и искать старые команды (, , history, !!, !$, !строка) — вы экономите время и избегаете ошибок.
  • При работе с историей стоит быть осторожным: команды через ! выполняются сразу, без подтверждения. Используйте :p для предпросмотра.
  • Поиск по истории (Ctrl + R) позволяет находить нужную команду по части текста и выполнять её снова.
  • Редактировать введённую строку можно сочетаниями клавиш (Ctrl + A/E/U/K/W, Alt + B/F). Это быстрее, чем при использовании стрелок.
  • Ctrl + S и Ctrl + Q управляют прокруткой вывода, а Ctrl + C прерывает выполнение команды.
  • Алиасы позволяют создавать короткие имена для часто используемых команд, ускоряя работу.
  • Алиас — это «ярлык для команды», а переменная — «коробка с текстом». Иногда они выглядят похоже, но работают по-разному.


Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф3.2. Как устроены команды, переменные окружения и где искать справку
Следующий параграф3.4. Навигация по файловой системе