Блок 4

Знакомство с терминалом

Linux: блок 4

Это ключевой поворотный момент курса. До сих пор мы работали в Ubuntu исключительно через привычный графический интерфейс — мышь, окна, кнопки. Начиная с этого блока, мы открываем терминал — тексто…

Обновлено: · DeeNet

Введение в блок

Это ключевой поворотный момент курса. До сих пор мы работали в Ubuntu исключительно через привычный графический интерфейс — мышь, окна, кнопки. Начиная с этого блока, мы открываем терминал — текстовый инструмент управления системой, который является главным рабочим инструментом любого системного администратора Linux. Всё, что вы делали мышью в Блоке 3, вы вскоре сможете сделать (а часто — сделать быстрее, точнее и с возможностью автоматизации) через текстовые команды.

Не переживайте, если поначалу терминал будет казаться пугающим чёрным окном с непонятными символами — это совершенно нормальное ощущение для каждого, кто когда-либо начинал изучать Linux. Мы разберём всё максимально подробно, шаг за шагом, ни одной команды без объяснения.

Урок 4.1. Что такое терминал, консоль, командная строка, shell — и чем они отличаются

Разобраться в четырёх похожих, но разных понятиях, которые часто путают между собой даже спустя долгое время после начала изучения Linux. Это база для всего дальнейшего курса.

Теория

В разговорах о Linux вы будете постоянно слышать слова «терминал», «консоль», «командная строка», «shell», «оболочка» — часто они используются как взаимозаменяемые синонимы, что порождает путаницу. Разберём каждое понятие по отдельности, а затем — как они связаны друг с другом.

Командная строка (command line) — это общее, самое широкое понятие: способ взаимодействия с компьютером через ввод текстовых команд с клавиатуры, в противоположность графическому интерфейсу (мышь, окна, значки). Это скорее концепция, чем конкретная программа.

Shell (оболочка) — это конкретная программа, которая принимает от вас введённую текстовую команду, разбирает (интерпретирует) её и просит операционную систему выполнить соответствующее действие, а затем показывает вам результат. Слово «shell» переводится с английского как «оболочка», «раковина» — эта программа буквально «обёртывает» ядро системы (см. урок 1.2), предоставляя пользователю удобный текстовый способ с ним взаимодействовать, не работая с ядром напрямую. Существует несколько разных программ-оболочек: Bash, Zsh, Fish, sh и другие — они отличаются деталями синтаксиса и дополнительными удобствами, но выполняют одну и ту же базовую функцию. В Ubuntu (и в большинстве дистрибутивов Linux) оболочкой по умолчанию является Bash (Bourne Again SHell) — именно её мы и будем подробно изучать в этом курсе, начиная с Блока 6, где разберём её углублённо, и в Блоке 15, где научимся писать на ней целые скрипты.

Терминал (terminal, terminal emulator) — это программа с графическим окном, которая создаёт визуальное пространство для ввода команд и отображения результатов, и внутри которой запускается shell. Исторически термин «терминал» пришёл из эпохи, когда к одному большому компьютеру физически подключались отдельные устройства — экран с клавиатурой без собственного процессора, называемые «терминалами» — через которые несколько людей одновременно могли работать с одним центральным компьютером. Сегодня, когда у каждого свой персональный компьютер, «терминал» — это уже не физическое устройство, а программа-эмулятор, имитирующая то самое историческое устройство. В Ubuntu стандартная программа-терминал называется просто Terminal (значок с символом «>_» или похожим).

Консоль (console) — в строгом техническом смысле означает нечто похожее на терминал, но чаще относится либо к самому первому, «встроенному» текстовому экрану Linux, доступному до запуска графического интерфейса (так называемая виртуальная консоль, к которой можно переключиться сочетанием клавиш вроде Ctrl+Alt+F3 на реальном компьютере), либо используется в разговорной речи как синоним слова «терминал». В большинстве повседневных разговоров различие между «терминал» и «консоль» несущественно, и мы в этом курсе будем в основном использовать слово «терминал» как наиболее точное для нашей практики (мы работаем именно с программой-эмулятором терминала внутри уже запущенного графического интерфейса).

Итоговая схема отношений: вы открываете программу терминал (окно на экране) → внутри неё автоматически запускается shell (программа Bash, которая на самом деле обрабатывает ваши команды) → вы вводите команды в стиле командной строки (текстовый способ взаимодействия) → результат выполнения команды показывается обратно в окне терминала.

Практика

Шаг 1. Откройте «Activities» (см. урок 3.1) и введите в поиск слово «terminal».

Что вы увидите: значок приложения «Terminal» с иконкой, обычно похожей на тёмный прямоугольник с текстовым символом.

[Скриншот рабочего стола]

Шаг 2. Щёлкните по найденному значку, чтобы запустить терминал. Дополнительно запомните быстрый способ на будущее: в большинстве конфигураций Ubuntu терминал можно открыть сочетанием клавиш Ctrl+Alt+T в любой момент, без необходимости искать значок через «Activities».

Что вы увидите: новое окно, обычно с тёмным фоном, где отображается некоторый текст и мигающий курсор — это и есть работающая оболочка Bash, ожидающая ваших команд.

[Скриншот терминала]

Шаг 3. Внимательно рассмотрите текст перед мигающим курсором — это называется приглашением командной строки (command prompt), подробно мы разберём его структуру в уроке 4.3. Пока просто убедитесь, что видите примерно такую строку: username@hostname:~$ (где username — ваше имя пользователя, hostname — имя компьютера, заданные при установке в уроке 2.5).

Шаг 4. Не вводите пока никаких команд — просто закройте окно терминала (крестик в углу окна либо сочетание клавиш Ctrl+Shift+Q) и откройте его заново, чтобы почувствовать, что это обычное окно программы, которое можно свободно открывать и закрывать, как любое другое приложение.

Разбор команд

В этом уроке мы ещё не вводили ни одной команды — мы только открыли и рассмотрели само окно терминала. Первые настоящие команды появятся уже в следующем уроке, 4.4.

Возможные ошибки

Почему возникает: в обычной повседневной работе разница действительно незаметна — вы просто открываете «терминал» и вводите «команды», не задумываясь, что это два разных слоя (программа-окно и программа-интерпретатор внутри неё).

Как определить: непонимание при встрече фраз вроде «сменить shell на Zsh, оставив тот же терминал» — если термин и shell — синонимы, это звучало бы противоречиво.

Как исправить: запомнить чёткое разделение: терминал — это окно-программа, shell — это интерпретатор команд внутри него; один и тот же терминал может запускать разные оболочки, и наоборот — один и тот же Bash может работать в разных программах-терминалах.

Как избежать: мысленно возвращаться к аналогии «терминал — это окно, shell — это переводчик и исполнитель внутри этого окна» при возникновении сомнений.

Практические задания

  1. Откройте терминал тремя разными способами: через поиск в «Activities», через сочетание клавиш Ctrl+Alt+T, и через значок на панели приложений слева, если он там есть (при необходимости закрепите значок терминала на панель — правый клик по запущенному терминалу на панели → «Pin to Dash» / «Закрепить на панели»).
  2. Найдите и запишите в конспект имя вашего пользователя и имя компьютера (hostname), которые вы видите в приглашении командной строки перед мигающим курсором.

Проверка знаний

Вопрос 1. Что именно на самом деле обрабатывает введённую вами команду — терминал или shell?

Ответ: Shell (в нашем случае Bash) — именно он интерпретирует введённый текст как команду и просит операционную систему выполнить соответствующее действие. Терминал — это лишь окно-программа, предоставляющее визуальное пространство для ввода текста и отображения результата.

Вопрос 2. Может ли один и тот же терминал запускать разные оболочки (shell)?

Ответ: Да, может — терминал и shell являются независимыми друг от друга слоями программного обеспечения, и теоретически внутри одной программы-терминала можно запустить как Bash, так и Zsh или другую оболочку.

Итоги урока

Вы изучили: разницу между понятиями терминал, консоль, командная строка и shell.

Вы умеете: открывать и закрывать программу терминала несколькими способами.

В следующем уроке потребуется: это понимание, чтобы разобраться, что такое Bash конкретно и почему он так распространён.

Урок 4.2. Bash как самая распространённая командная оболочка

Познакомиться с Bash — конкретной оболочкой, с которой вы будете работать на протяжении всего курса, — и понять её место среди других shell-программ.

Теория

Bash (Bourne Again SHell — «снова оболочка Борна», с игрой слов «born again», «рождённая заново») — это программа-оболочка, созданная в рамках проекта GNU (вспомните урок 1.3) в 1989 году программистом Брайаном Фоксом как свободная, открытая замена более старой коммерческой оболочки sh (Bourne shell, названной по имени её автора, Стивена Борна — отсюда и игра слов в названии Bash). Bash быстро стала оболочкой по умолчанию в подавляющем большинстве дистрибутивов Linux, включая Ubuntu, и остаётся таковой по сей день.

Почему Bash стал настолько распространён и остаётся стандартом де-факто:

Существуют и другие популярные оболочки, с которыми вы, возможно, столкнётесь в будущем за пределами этого курса:

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

Практика

Шаг 1. Откройте терминал (как в предыдущем уроке).

Шаг 2. Введите свою первую настоящую команду — echo $SHELL — и нажмите клавишу Enter.

Что делает эта команда: echo — это команда, которая просто выводит на экран переданный ей текст (подробно разберём её в разделе «Разбор команд» ниже); $SHELL — это специальная переменная окружения (подробно о переменных — в Блоке 6), которая хранит путь к программе-оболочке, используемой в данный момент.

Что вы увидите: строку вида /bin/bash — это подтверждение, что ваша текущая оболочка действительно Bash, а /bin/ — это системная папка, где хранится сама программа-оболочка (подробно о структуре системных папок — в Блоке 5).

[Скриншот терминала]

Шаг 3. Введите команду bash --version и нажмите Enter.

Что вы увидите: несколько строк текста с указанием точной версии установленного Bash, а также краткая информация об авторских правах GNU.

Разбор команд

Команда echo

Команда bash

Возможные ошибки

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

Как определить: терминал выводит сообщение вроде ehco: command not found («команда не найдена»).

Как исправить: внимательно перечитать введённую команду, исправить опечатку и нажать Enter заново. В следующем уроке (4.5) мы изучим историю команд, которая позволяет быстро вызвать предыдущую команду для редактирования, не набирая её заново с нуля.

Как избежать: набирать команды внимательно, использовать автодополнение по клавише Tab (подробно — в уроке 4.5) там, где это возможно.

Практические задания

  1. Введите команду echo $SHELL и запишите в конспект точный путь, который она вывела.
  2. Введите команду bash --version и запишите в конспект точную версию Bash, установленную в вашей системе.
  3. Попробуйте ввести команду с намеренной опечаткой (например, echoo привет) и внимательно прочитайте сообщение об ошибке, которое выведет терминал — запишите это сообщение в конспект своими словами: что, по-вашему, оно означает.

Проверка знаний

Вопрос 1. Что означает расшифровка названия Bash и с чем это связано исторически?

Ответ: Bash расшифровывается как «Bourne Again SHell» — это игра слов, отсылающая к более старой оболочке sh (Bourne shell), названной по имени её автора Стивена Борна. Bash задумывался как свободная и расширенная замена этой более старой оболочки.

Вопрос 2. Что произойдёт, если в терминале ввести команду с опечаткой в её названии?

Ответ: Терминал выведет сообщение об ошибке вида «command not found» («команда не найдена»), потому что shell не может найти программу с таким именем среди установленных на компьютере команд, и никакое действие выполнено не будет.

Итоги урока

Вы изучили: происхождение и особенности оболочки Bash, а также существование альтернативных оболочек.

Вы умеете: вводить простые команды (echo, bash --version) и распознавать сообщение об ошибке «команда не найдена».

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

Урок 4.3. Как открыть терминал и что означает приглашение командной строки

Научиться «читать» приглашение командной строки (то самое username@hostname:~$, которое мы видели в уроке 4.1) — понимание каждого его элемента помогает всегда точно знать, под каким пользователем вы работаете и в какой папке находитесь, что критически важно при администрировании системы.

Теория

Приглашение командной строки (command prompt, часто сокращают просто до «промпт») — это текст, который Bash выводит перед мигающим курсором, приглашая вас ввести следующую команду. По умолчанию в Ubuntu приглашение выглядит примерно так:

```

username@hostname:~$

```

Разберём его по частям.

username — имя пользователя, под которым вы сейчас работаете в системе (то самое имя, которое вы задавали при установке в уроке 2.5, или имя другого пользователя, если вы вошли под ним).

@ — простой разделительный символ («at», «собака»), отделяющий имя пользователя от имени компьютера. Смысловой аналог — «пользователь username, работающий НА компьютере hostname».

hostname — имя компьютера в сети (тоже задавалось при установке в уроке 2.5, в поле «Your computer's name»). Это особенно важное поле, когда вы будете работать одновременно с несколькими компьютерами через SSH (Блок 13) — приглашение командной строки сразу подскажет, к какому именно компьютеру вы сейчас подключены, что помогает избежать досадных ошибок (например, случайного выполнения опасной команды не на той машине).

: — ещё один разделительный символ, отделяющий «кто и где» (пользователь и компьютер) от «в какой папке сейчас находится пользователь».

~ — это специальный символ-сокращение, обозначающий домашнюю папку текущего пользователя (мы уже упоминали домашнюю папку в уроке 3.2). То есть символ ~ — это как бы «ярлык» на путь вида /home/username. Если вы перейдёте, например, в папку Documents внутри домашней папки, этот символ в приглашении сменится на ~/Documents. А если вы перейдёте в какую-то системную папку за пределами домашней, например /etc, приглашение покажет полный путь /etc вместо символа ~ (так как ~ имеет смысл только внутри домашней папки конкретного пользователя). Подробно о путях и навигации — в Блоке 5.

$ — последний символ приглашения, который несёт важную практическую информацию: он показывает, что вы работаете под обычным пользователем с ограниченными правами. Если бы вы работали под пользователем root (суперпользователем с неограниченными правами — подробно об этом в Блоке 8), этот символ поменялся бы на # (решётку). Это простое, но очень важное визуальное правило безопасности: опытные администраторы всегда бросают взгляд именно на этот символ перед выполнением потенциально опасной команды — символ # означает, что ошибка может нанести системе куда больший вред, чем при работе под символом $.

Практика

Шаг 1. Откройте терминал и внимательно посмотрите на текущее приглашение командной строки.

Что вы увидите: что-то вроде student@ubuntu-course:~$ (конкретные значения будут зависеть от того, что вы вводили при установке в уроке 2.5).

Шаг 2. Введите команду whoami и нажмите Enter.

Что делает команда: whoami дословно означает «кто я» и выводит имя пользователя, под которым вы сейчас работаете — это тот же username, что и в приглашении командной строки, но полученный явной командой, а не просто визуально.

Что вы увидите: строку с вашим именем пользователя, например student.

Шаг 3. Введите команду hostname и нажмите Enter.

Что делает команда: выводит имя компьютера — тот же hostname, что вы видите в приглашении.

Что вы увидите: имя вашего компьютера, например ubuntu-course.

Шаг 4. Введите команду pwd и нажмите Enter (подробно эту команду разберём в Блоке 5, но полезно увидеть её уже сейчас, в связке с символом ~).

Что делает команда: pwd (Print Working Directory — «показать текущую рабочую папку») выводит полный путь к папке, в которой вы сейчас находитесь.

Что вы увидите: что-то вроде /home/student — это полный путь, который символ ~ в приглашении сокращённо обозначает.

[Скриншот терминала]

Разбор команд

Команда whoami

Команда hostname

Возможные ошибки

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

Как определить: сложно заметить последствия этой невнимательности, пока не наступит ситуация, где разница критична (например, в Блоке 8, когда вы впервые переключитесь на пользователя root).

Как исправить: сознательно начать привычку — каждый раз перед вводом важной или незнакомой команды на долю секунды взглянуть на последний символ приглашения.

Как избежать: сформировать эту привычку уже сейчас, на раннем этапе обучения, чтобы она стала автоматической к моменту изучения Блока 8, где разница между $ и # станет практически значимой.

Практические задания

  1. Введите команды whoami, hostname и pwd, сравните их вывод с тем, что показывает приглашение командной строки, и запишите в конспект, за какую часть приглашения отвечает каждая из этих трёх команд.
  2. Своими словами опишите в конспекте, зачем нужен символ ~ в приглашении и что он обозначает.

Проверка знаний

Вопрос 1. Что произойдёт с приглашением командной строки, если вы перейдёте из домашней папки в системную папку /etc (переход мы изучим в Блоке 5, но можно рассуждать теоретически)?

Ответ: Символ ~ в приглашении сменится на полный путь /etc, так как этот символ является сокращением только для домашней папки текущего пользователя и не применяется за её пределами.

Вопрос 2. Какой символ в конце приглашения командной строки говорит о том, что вы работаете под суперпользователем root, а не под обычным пользователем?

Ответ: Символ # (решётка). Обычный пользователь видит в конце приглашения символ $.

Итоги урока

Вы изучили: структуру и смысл каждого элемента приглашения командной строки Bash.

Вы умеете: определять текущего пользователя, имя компьютера и текущую папку по приглашению командной строки, а также подтверждать эту информацию явными командами whoami, hostname, pwd.

В следующем уроке потребуется: понимание приглашения командной строки, чтобы начать вводить полноценные команды системы.

Урок 4.4. Первые команды: `pwd`, `whoami`, `date`, `clear`, `echo`

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

Теория

В этом уроке новой теории немного — мы уже частично разобрали команды pwd, whoami и echo в предыдущих уроках. Добавим сюда две новые: date и clear, а также закрепим общий принцип: любая команда в Linux — это, по сути, отдельная программа, хранящаяся где-то на диске (чаще всего в системных папках /bin, /usr/bin и похожих, о структуре которых подробно поговорим в Блоке 5). Когда вы вводите, например, pwd и нажимаете Enter, Bash ищет программу с таким именем среди известных ему мест, запускает её, передаёт ей управление, дожидается завершения её работы и показывает вам результат — весь этот процесс происходит незаметно для пользователя за доли секунды, но важно понимать, что «команда» — это не какая-то магия внутри Bash, а запуск отдельной, часто очень простой программы.

Практика

Шаг 1. Введите команду pwd (уже знакомую по предыдущему уроку) и нажмите Enter, чтобы ещё раз явно увидеть свою текущую рабочую папку.

Шаг 2. Введите команду date и нажмите Enter.

Что делает команда: выводит текущую системную дату и время.

Что вы увидите: строку вида Mon Jul 20 14:32:07 UTC 2026 (конкретный формат и значения будут зависеть от настроек локали и текущего момента времени — вспомните урок 3.4, где мы проверяли часовой пояс через графический интерфейс; теперь вы видите тот же параметр, но через командную строку).

[Скриншот терминала]

Шаг 3. Введите команду echo "Меня зовут [ваше имя], я изучаю Linux", подставив своё реальное имя, и нажмите Enter.

Что вы увидите: введённый текст, выведенный обратно в терминал.

Шаг 4. Введите несколько любых команд подряд (например, повторите pwd, whoami, date ещё раз), чтобы экран терминала заполнился текстом, а затем введите команду clear и нажмите Enter.

Что произойдёт: весь текст в окне терминала исчезнет, и вы увидите чистый экран с одним лишь приглашением командной строки вверху — это не сброс работы терминала и не выход из системы, а просто визуальная очистка экрана для удобства, вся история команд (о ней подробно — в следующем уроке) сохраняется.

Разбор команд

Команда date

Команда clear

Возможные ошибки

Почему возникает: новичок не подозревает о существовании форматирующей строки, начинающейся со знака +.

Как определить: команда выводит полный «человекочитаемый» формат вместо ожидаемого короткого.

Как исправить: использовать документацию команды (man date, подробно разберём в уроке 4.7) для поиска нужных кодов формата.

Как избежать: заранее ознакомиться с самыми частыми форматами (%Y — год, %m — месяц, %d — день, %H — часы, %M — минуты, %S — секунды) — они пригодятся уже в Блоке 15 при написании скриптов резервного копирования.

Практические задания

  1. Выведите текущую дату в формате «только год и месяц» (подсказка: используйте date +%Y-%m).
  2. Очистите экран терминала командой clear, а затем повторите то же самое действие сочетанием клавиш Ctrl+L, чтобы убедиться, что результат идентичен.
  3. С помощью echo выведите на экран три строки о себе: имя, город, цель изучения Linux — каждую отдельной командой echo.

Проверка знаний

Вопрос 1. Что происходит с историей уже введённых команд после выполнения команды clear?

Ответ: История команд полностью сохраняется — clear влияет только на то, что визуально отображается в данный момент на экране терминала, но не удаляет никакие данные и не отменяет никакие уже выполненные действия.

Вопрос 2. Как можно вывести текущую дату в формате «год-месяц-день» вместо полного стандартного вывода?

Ответ: С помощью параметра форматирования, например date +%Y-%m-%d, где %Y означает год, %m — месяц, %d — день.

Итоги урока

Вы изучили: команды date и clear, а также общий принцип, что каждая команда — это отдельная запускаемая программа.

Вы умеете: выводить и форматировать текущую дату, очищать экран терминала.

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

Урок 4.5. Автодополнение, история команд, горячие клавиши терминала

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

Теория

Автодополнение по клавише Tab. Bash умеет «угадывать» и автоматически дополнять то, что вы начали печатать — названия команд, имена файлов и папок. Если начать вводить часть слова и нажать клавишу Tab, Bash попробует дополнить его до полного варианта, если такой вариант единственный; если подходящих вариантов несколько, при повторном нажатии Tab Bash покажет список всех возможных вариантов. Это не просто удобство — это ещё и надёжная защита от опечаток: если Tab что-то дополнил, значит, введённое вами имя команды/файла точно существует и написано без ошибок.

История команд. Bash автоматически запоминает все команды, которые вы вводили в текущей и предыдущих сессиях терминала (сохраняя их в специальном скрытом файле ~/.bash_history — вспомните символ ~ из урока 4.3, обозначающий домашнюю папку; про скрытые файлы, начинающиеся с точки, подробно поговорим в Блоке 5). Чтобы просмотреть предыдущие команды, не набирая их заново, используются клавиши со стрелками вверх/вниз: стрелка вверх («Arrow Up») показывает предыдущую введённую команду, повторное нажатие — команду ещё раньше, и так далее; стрелка вниз двигает историю в обратном направлении, к более новым командам.

Горячие клавиши терминала. Помимо стрелок и Tab, в Bash есть множество полезных сочетаний клавиш:

Практика

Шаг 1. В терминале начните вводить whoa (это неполное начало команды whoami) и нажмите клавишу Tab.

Что произойдёт: если whoami — единственная известная системе команда, начинающаяся с whoa, Bash автоматически дополнит ввод до полного слова whoami. Нажмите Enter, чтобы выполнить дополненную команду.

Шаг 2. Введите просто who и дважды нажмите Tab.

Что вы увидите: список всех известных системе команд, начинающихся с «who» (возможно несколько вариантов, например who, whoami, whoami и другие похожие) — так работает автодополнение при неоднозначности.

[Скриншот терминала]

Шаг 3. Нажмите клавишу «стрелка вверх» несколько раз подряд, наблюдая, как в строке ввода последовательно появляются ваши предыдущие команды из уроков этого блока.

Шаг 4. Найдя через историю команду date, нажмите Enter, чтобы выполнить её повторно, не набирая заново.

Шаг 5. Введите любую длинную команду, например echo "тестирование горячих клавиш терминала", но пока не нажимайте Enter. Попробуйте Ctrl+A (курсор переместится в начало строки), затем Ctrl+E (курсор вернётся в конец строки).

Шаг 6. Введите команду sleep 30 (эта команда просто «засыпает», ничего не делая, на 30 секунд — удобный способ безопасно потренироваться в прерывании команд) и нажмите Enter.

Что произойдёт: терминал «зависнет» без вывода приглашения на 30 секунд, ожидая завершения команды sleep.

Шаг 7. Не дожидаясь окончания 30 секунд, нажмите Ctrl+C.

Что произойдёт: выполнение команды sleep будет немедленно прервано, и вы снова увидите приглашение командной строки, готовое принимать новые команды.

[Скриншот результата]

Шаг 8. Нажмите Ctrl+R и начните печатать ech (часть команды echo, которую мы использовали ранее).

Что вы увидите: приглашение сменится на (reverse-i-search), и под ним появится наиболее свежая подходящая команда из истории. Нажмите Enter, чтобы выполнить найденную команду, либо Ctrl+C, чтобы отменить поиск и вернуться к обычному пустому приглашению.

Разбор команд

Команда sleep

Возможные ошибки

Почему возникает: непривычность нового инструмента, отсутствие сформированной привычки.

Как определить: заметно более медленная работа в терминале по сравнению с более опытными пользователями.

Как исправить: сознательно, при каждой возможности, пробовать стрелку вверх перед тем, как печатать похожую команду заново.

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

Почему возникает: незнание о существовании способа мягкого прерывания текущей команды.

Как определить: приглашение командной строки не появляется в ответ на нажатие Enter, курсор просто мигает на новой строке без символа приглашения.

Как исправить: сначала попробовать Ctrl+C — в подавляющем большинстве случаев это решает проблему, прерывая текущую команду и возвращая рабочее приглашение, без необходимости закрывать всё окно терминала (что привело бы к потере истории текущей сессии и, возможно, прерыванию других важных процессов, запущенных в этом же окне).

Как избежать: запомнить Ctrl+C как «аварийный тормоз» терминала — универсальный первый шаг при любом «зависании».

Практические задания

  1. Используя только автодополнение по Tab, попробуйте ввести команды whoami, hostname, date, начиная лишь с первых 2-3 букв каждой.
  2. Запустите команду sleep 60, а затем прервите её сочетанием Ctrl+C раньше, чем истекут 60 секунд.
  3. Используя Ctrl+R, найдите в истории любую из команд, которые вы вводили в этом уроке, не вводя её полностью с клавиатуры.

Проверка знаний

Вопрос 1. Что произойдёт, если нажать Tab после ввода начала команды, для которой существует несколько подходящих вариантов в системе?

Ответ: При однократном нажатии, если вариантов несколько, Bash может не дополнить ничего видимого (может лишь дополнить до общей для всех вариантов части); при повторном нажатии Tab Bash покажет список всех подходящих вариантов, среди которых можно продолжить печатать, чтобы уточнить выбор.

Вопрос 2. Какое сочетание клавиш используется для немедленного прерывания выполняющейся, но ещё не завершившейся команды?

Ответ: Ctrl+C. Это универсальный способ «мягко» остановить текущую выполняющуюся команду, не закрывая при этом сам терминал.

Итоги урока

Вы изучили: автодополнение по Tab, историю команд, ключевые горячие клавиши терминала (Ctrl+C, Ctrl+L, Ctrl+A, Ctrl+E, Ctrl+U, Ctrl+R).

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

В следующем уроке потребуется: эти инструменты, чтобы разобрать общую структуру любой команды Linux — команда, опции, аргументы.

Урок 4.6. Структура команды: команда, опции, аргументы

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

Теория

Практически любая команда в Bash строится по одной и той же общей схеме:

```

команда [опции] [аргументы]

```

Разберём каждую часть.

Команда — это имя самой программы, которую вы хотите запустить (например, echo, date, ls — команду ls подробно изучим в Блоке 5).

Опции (options, часто также называют флагами, flags, или ключами) — это специальные модификаторы, которые изменяют поведение команды. Опции обычно начинаются с одного дефиса и одной буквы (короткие опции, например -l) либо с двух дефисов и целого слова (длинные опции, например --version, которую мы уже использовали в уроке 4.2 с командой bash --version). Короткие опции часто можно комбинировать друг с другом после одного дефиса, например -la вместо -l -a по отдельности (мы увидим это на практике в Блоке 5 с командой ls -la).

Аргументы (arguments) — это конкретные «объекты», над которыми должна быть выполнена команда: имя файла, текст для вывода, путь к папке и так далее. В команде echo "Привет" аргументом является сама строка "Привет".

Важно понимать: не каждая команда обязательно требует все три части. Некоторые команды (как pwd или whoami) прекрасно работают вообще без опций и аргументов. Другие — требуют обязательный аргумент (например, команда для копирования файла обязательно требует указать, какой файл копировать). Опции почти всегда необязательны и лишь донастраивают поведение команды под конкретную ситуацию.

Ещё одно важное понятие, тесно связанное со структурой команды — код завершения (exit code, иногда называют return code). После завершения работы каждой команды операционная система сохраняет специальное число, показывающее, успешно ли завершилась команда (код 0 означает успех) или произошла ошибка (любое число, отличное от нуля, обычно означает ту или иную ошибку, при этом конкретное значение числа может указывать на конкретный тип ошибки для данной команды). Это число не отображается по умолчанию явно на экране, но его можно посмотреть — и оно станет особенно важным инструментом в Блоке 15, когда мы будем писать Bash-скрипты и научимся автоматически проверять, успешно ли выполнилась та или иная команда внутри скрипта.

Практика

Шаг 1. Введите команду date без опций и аргументов, чтобы увидеть стандартный вывод (мы уже делали это в уроке 4.4).

Шаг 2. Введите ту же команду с опцией: date -u (короткая опция -u, означающая вывод времени в UTC вместо локального часового пояса).

Что вы увидите: вывод даты и времени, но в универсальном часовом поясе UTC, возможно отличающийся от вашего локального времени на несколько часов, в зависимости от вашего региона.

Шаг 3. Введите команду с аргументом-форматом: date "+Сегодня %d.%m.%Y" (аргумент здесь — сама строка формата, начинающаяся со знака +, которую мы уже видели в уроке 4.4).

Что вы увидите: текущую дату, оформленную по указанному в аргументе шаблону, например «Сегодня 20.07.2026».

Шаг 4. Проверим код завершения команды. Введите заведомо корректную команду, например whoami, нажмите Enter, а сразу следом введите специальную команду echo $? и нажмите Enter.

Что делает $?: это специальная переменная Bash, которая всегда хранит код завершения самой последней выполненной команды.

Что вы увидите: число 0, подтверждающее, что whoami завершилась успешно.

[Скриншот терминала]

Шаг 5. Теперь введите заведомо несуществующую команду, например nesuchestvuyuschaya_komanda, нажмите Enter (получите сообщение об ошибке «command not found», знакомое по уроку 4.2), а затем снова введите echo $?.

Что вы увидите: число, отличное от нуля (часто 127 — этот конкретный код исторически используется именно для случая «команда не найдена»), подтверждающее, что предыдущая команда завершилась неудачно.

Разбор команд

В этом уроке мы не вводили принципиально новых команд, а более глубоко разобрали структуру уже известных (date) и ввели важную специальную переменную:

Специальная переменная $?

Возможные ошибки

Почему возникает: для новичка не всегда очевидно, начинается ли элемент команды с дефиса и является опцией, или это обычный аргумент.

Как определить: перечитать введённую команду и обратить внимание, есть ли перед соответствующим словом один или два дефиса.

Как исправить: мысленно (или письменно, в конспекте) разбирать незнакомые команды на три части — команда/опции/аргументы — прежде чем выполнять их.

Как избежать: при изучении каждой новой команды в этом курсе сознательно обращать внимание на структуру приведённых примеров: что в них является собственно командой, что — опцией, а что — аргументом.

Практические задания

  1. Разберите (письменно, в конспекте) на три части — команда/опции/аргументы — следующую составную команду, ещё не выполняя её в терминале: date -u "+%H:%M".
  2. Проверьте код завершения ($?) после трёх разных команд: одной заведомо успешной (например, pwd), и двух заведомо ошибочных с разным написанием (например, pwdd и abcdef) — сравните полученные коды и запишите в конспект наблюдение (например, оба ли ошибочных случая дали одинаковый код или разные).

Проверка знаний

Вопрос 1. Какой код завершения означает, что команда выполнилась успешно?

Ответ: 0 (ноль). Любое отличное от нуля число обычно указывает на ту или иную ошибку выполнения.

Вопрос 2. Обязательно ли каждой команде в Linux требуются опции и аргументы?

Ответ: Нет. Некоторые команды (например, pwd, whoami) полностью работоспособны вообще без опций и аргументов; опции почти всегда необязательны, а необходимость аргументов зависит от конкретной команды — некоторым они требуются обязательно, другим не нужны вовсе.

Итоги урока

Вы изучили: универсальную структуру команд Linux (команда/опции/аргументы) и понятие кода завершения.

Вы умеете: разбирать незнакомые команды на составные части и проверять успешность выполнения команды через $?.

В следующем уроке потребуется: понимание структуры команд, чтобы научиться получать справку по любой команде — важнейший навык самостоятельного обучения, без которого невозможна дальнейшая самостоятельная работа с Linux.

Урок 4.7. Получение справки: `man`, `--help`, `info`

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

Теория

В Linux встроено несколько систем документации, доступных прямо из терминала.

Man-страницы (man, сокращение от «manual», «руководство»). Это основная и наиболее полная система документации в Linux, присутствующая практически на любой системе с самых ранних версий UNIX (вспомните урок 1.1). Man-страницы существуют для подавляющего большинства команд, конфигурационных файлов и системных функций. Структура типичной man-страницы стандартизирована и обычно включает разделы: NAME (краткое название и описание), SYNOPSIS (синтаксис использования), DESCRIPTION (подробное описание), OPTIONS (список всех опций с объяснением), иногда EXAMPLES (примеры использования) и SEE ALSO (ссылки на связанные команды).

Флаг --help. Большинство современных команд поддерживают специальный флаг --help (иногда также работает короткий вариант -h), который выводит краткую справку прямо в терминал — обычно короче и компактнее полноценной man-страницы, но зачастую этого достаточно, чтобы быстро вспомнить нужный параметр, не открывая полную документацию.

Команда info. Ещё одна, менее распространённая на практике система документации, разработанная в рамках проекта GNU как более структурированная и с возможностью навигации по разделам, alternative к man. На практике системные администраторы значительно чаще пользуются именно man и --help, а info используется реже, в основном для некоторых конкретных инструментов GNU с особенно объёмной документацией.

Практический совет, которым руководствуются опытные администраторы: при столкновении с любой незнакомой командой или желании вспомнить забытый параметр уже известной команды — первым делом стоит попробовать именно встроенную документацию системы (man, --help), а не сразу искать ответ в интернете. Это быстрее (не требует интернет-соединения, что особенно важно при работе на сервере без доступа в сеть), и, что важнее, документация внутри системы всегда точно соответствует именно установленной у вас версии программы — в отличие от случайной статьи в интернете, которая может описывать устаревшую или, наоборот, слишком новую версию.

Практика

Шаг 1. Введите команду man ls (мы ещё не изучали саму команду ls подробно — это будет в Блоке 5, но она отлично подходит для тренировки работы с man, так как имеет много параметров) и нажмите Enter.

Что произойдёт: терминал переключится в специальный полноэкранный режим просмотра документации (называется пейджер, обычно используется программа less, которую подробно разберём в Блоке 6) — весь экран заполнится текстом man-страницы для команды ls.

[Скриншот терминала]

Шаг 2. Находясь внутри открытой man-страницы, попробуйте базовую навигацию: нажмите клавишу пробел (Space), чтобы пролистать текст на страницу вперёд; нажмите клавишу b, чтобы вернуться на страницу назад; используйте стрелки вверх/вниз для построчной прокрутки.

Шаг 3. Находясь всё ещё внутри man-страницы, нажмите / (слэш), чтобы включить режим поиска внутри текста, введите слово hidden (в поисках раздела про скрытые файлы, о которых подробно поговорим в Блоке 5) и нажмите Enter.

Что произойдёт: курсор перепрыгнет к первому найденному в тексте вхождению искомого слова, подсвечивая его. Для перехода к следующему совпадению нажмите клавишу n.

Шаг 4. Чтобы выйти из режима просмотра man-страницы и вернуться к обычному приглашению командной строки, нажмите клавишу q (quit, «выход»).

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

Шаг 5. Введите команду ls --help и нажмите Enter (обратите внимание: в отличие от man, эта команда не переключает экран в полноэкранный режим, а просто выводит текст справки прямо в обычный поток терминала).

Что вы увидите: список опций команды ls с краткими однострочными пояснениями к каждой — заметно короче и компактнее полной man-страницы.

Шаг 6. Введите команду man man (да, у самой команды man тоже есть собственная man-страница!) и полистайте её немного, чтобы увидеть, насколько подробно задокументирована сама система документации, а затем выйдите клавишей q.

Разбор команд

Команда man

Способы исправления: для встроенных команд Bash (builtin) вместо man используется команда help (например, help cd), либо соответствующий раздел внутри общей документации man bash.

Флаг --help

Возможные ошибки

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

Как определить: курсор терминала «застрял» на нижней строке экрана с текстом документации, обычные команды не вводятся.

Как исправить: нажать клавишу q, чтобы корректно выйти из режима просмотра документации.

Как избежать: запомнить это простое правило заранее: любую man-страницу (и, забегая вперёд, многие другие программы, использующие похожий полноэкранный текстовый интерфейс) можно закрыть клавишей q.

Практические задания

  1. Откройте man-страницу команды date (man date), найдите с помощью поиска (/) раздел про формат вывода, посмотрите несколько примеров форматирующих кодов, помимо уже изученных нами %Y, %m, %d, и запишите в конспект два новых кода формата, которые покажутся вам полезными.
  2. Сравните вывод man ls и ls --help — запишите в конспект своими словами, чем они отличаются по объёму и подаче информации.
  3. Попробуйте команду man -k time и просмотрите (не обязательно детально изучая) список найденных результатов — просто оцените, сколько разных команд и файлов в системе так или иначе связаны со словом «time».

Проверка знаний

Вопрос 1. Какой клавишей корректно закрывается открытая man-страница и возвращает обычное приглашение командной строки?

Ответ: Клавишей q (quit).

Вопрос 2. В чём основное практическое отличие между man команда и команда --help?

Ответ: man открывает полную, подробную документацию в отдельном полноэкранном режиме просмотра, часто включающую примеры и развёрнутые описания; --help выводит краткую справку прямо в обычный поток терминала, обычно значительно короче и без подробных примеров — удобно для быстрого напоминания, но не заменяет полную документацию для глубокого изучения незнакомой команды.

Итоги урока

Вы изучили: три встроенные системы документации Linux — man, --help, info — и навигацию внутри man-страниц.

Вы умеете: самостоятельно находить документацию по любой команде системы, не выходя в интернет.

В следующем уроке (это будет уже начало Блока 5) потребуется: весь накопленный в этом блоке навык уверенной работы в терминале — открытие, ввод команд, история, автодополнение, получение справки — чтобы применить его к изучению файловой системы Linux, одной из центральных тем всего курса.

Мини-проект блока

Задача: самостоятельно закрепить весь материал блока, создав личный справочник команд — как если бы вы готовили памятку для нового коллеги, впервые садящегося за терминал Linux.

Что нужно сделать:

  1. В своём конспекте оформите таблицу из как минимум 15 команд, которые вы уже использовали в этом блоке (echo, date, pwd, whoami, hostname, clear, bash, sleep, man, и другие, встреченные в примерах и заданиях), с тремя столбцами: «Команда», «Что делает своими словами», «Пример использования».
  2. Для трёх любых команд из своей таблицы откройте man и найдите там хотя бы одну опцию, которую мы не разбирали в уроке — запишите её и её назначение.
  3. Продемонстрируйте (самостоятельно, для себя) уверенное владение историей команд и автодополнением: наберите подряд десять разных команд из своей таблицы, используя Tab для дополнения каждой из них хотя бы частично, а затем с помощью стрелки вверх вернитесь к пятой по счёту команде и выполните её повторно.

Критерий готовности: таблица заполнена самостоятельно, без сплошного копирования формулировок из текста уроков, и вы можете уверенно, не подглядывая, объяснить разницу между терминалом и shell любому человеку.

Контрольные вопросы

  1. Объясните разницу между терминалом, shell, консолью и командной строкой.
  2. Распишите по частям структуру приглашения командной строки student@ubuntu-course:~$.
  3. Разберите команду date -u "+%H:%M" на составные части: команда, опции, аргументы.
  4. Что означает код завершения 0, и как его узнать после выполнения любой команды?
  5. Опишите, как открыть, найти нужную информацию внутри и корректно закрыть man-страницу любой команды.

Выводы по блоку

Вы совершили качественный скачок — от полностью визуальной работы через графический интерфейс (Блок 3) к первым уверенным шагам в терминале, главном инструменте системного администратора Linux. Вы разобрались в базовой терминологии (терминал/shell/консоль), познакомились с Bash, научились читать приглашение командной строки, ввели свои первые настоящие команды, освоили инструменты ускорения работы (автодополнение, история, горячие клавиши) и, что особенно важно для дальнейшего самостоятельного обучения, — научились находить справочную информацию прямо в системе через man и --help.

Список изученных тем

Рекомендации перед переходом

Прежде чем двигаться дальше, убедитесь, что вы можете уверенно, без долгих раздумий, открыть терминал, ввести простую команду, воспользоваться историей команд и открыть/закрыть man-страницу. Все эти базовые навыки станут вашим постоянным рабочим инструментом в Блоке 5 и во всех последующих блоках курса — там мы будем вводить намного больше новых команд, и уверенное владение самим терминалом как инструментом (а не только конкретными командами) значительно облегчит освоение нового материала.