Модуль 02 — Терминал и справка

Как устроена команда и где узнать, что она умеет

Прогресс курса Модуль 2 из 9

Что вы освоите в этом модуле

01

Терминал и оболочка

Терминал — окно, которое показывает текст и передаёт нажатия клавиш. Оболочка (shell) — программа внутри терминала, которая читает вашу команду, запускает нужную программу и выводит её ответ. В Debian оболочка по умолчанию — bash.

Терминалом может быть консоль ВМ, окно PuTTY или «Терминал» Windows с подключением по SSH (модуль 08) — оболочка на сервере одна и та же.

Оболочка ждёт команду, показывая приглашение:

student@debian:~$
│       │      │ └─ $ — обычный пользователь, # — root
│       │      └─── текущий каталог, ~ — домашний
│       └────────── имя компьютера
└────────────────── имя пользователя

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

В примерах курса приглашение часто сокращено до $. Набирать нужно то, что после него; строки без $ — ответ системы.
02

Команда, опции, аргументы

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

$ ls -l -a /etc
  │   └──┬─┘ └┬─┘
  │      │    └─ аргумент: с чем работать
  │      └────── опции: как работать
  └───────────── имя команды

Правила записи

  • Короткие опции — дефис и буква: -l. Их можно склеивать: ls -la = ls -l -a.
  • Длинные опции — два дефиса и слово: ls --all. Длиннее, зато понятнее в скриптах.
  • Регистр важен: ls -r (обратный порядок) и ls -R (рекурсивно) — разные опции; LS — не команда.
  • Пробел — разделитель. Имя файла с пробелом берут в кавычки: ls "мои документы".

Если команда отработала успешно, она обычно ничего не пишет. Тишина в Linux — признак успеха, а не зависания: оболочка снова показала приглашение, значит, команда завершилась.

03

Где я и что здесь: pwd и ls

В каждый момент оболочка находится в каком-то текущем каталоге. Узнать его — pwd (print working directory). После входа это домашний каталог пользователя:

$ pwd
/home/student

ls показывает содержимое каталога — текущего или указанного:

$ ls /
bin   dev  home        lib    lost+found  mnt  proc  run   srv  tmp  var
boot  etc  initrd.img  lib64  media       opt  root  sbin  sys  usr  vmlinuz

Самые нужные опции ls:

$ ls -l /etc/hostname /etc/os-release       # подробно
-rw-r--r-- 1 root root  7 окт 10 19:15 /etc/hostname
lrwxrwxrwx 1 root root 21 мая  8 19:10 /etc/os-release -> ../usr/lib/os-release

$ ls -la                     # подробно и со скрытыми файлами
итого 20
drwx------ 2 student student 4096 окт 14 10:05 .
drwxr-xr-x 3 root    root    4096 окт 10 19:20 ..
-rw------- 1 student student  112 окт 14 10:05 .bash_history
-rw-r--r-- 1 student student  220 окт 10 19:20 .bash_logout
-rw-r--r-- 1 student student 3526 окт 10 19:20 .bashrc
-rw-r--r-- 1 student student  807 окт 10 19:20 .profile

$ ls -lh /usr/bin/bash         # размер в К, М, Г
-rwxr-xr-x 1 root root 1,3M мая  9 14:07 /usr/bin/bash
Поле ls -lПримерЧто значит
Тип и права-rw-r--r--Первый символ — тип: - файл, d каталог, l ссылка. Права — модуль 04
Число ссылок1Модуль 03
Владелец и группаroot rootМодуль 04
Размер7В байтах, с -h — в удобных единицах
Дата измененияокт 10 19:15Для файлов старше полугода вместо времени — год
Имя/etc/hostnameДля ссылки — ещё и куда она указывает

Скрытые файлы — те, чьё имя начинается с точки: .bashrc, .profile. Это обычные файлы, точка лишь просит ls не показывать их без -a. Так хранят настройки программ. Записи . и .. — сам каталог и его родитель.

04

Пути и переход: cd

Файловая система Linux — одно дерево с корнем /. Дисков C: и D: нет: другие диски подключаются как каталоги внутри дерева (модуль 06). Разделитель в пути — прямая косая черта /.

/
├── etc/
│   └── hostname
├── home/
│   └── student/          ← домашний каталог, ~
│       └── project/
│           └── README.md
└── tmp/
ПутьОткуда отсчитываетсяПример для README.md из /home/student
АбсолютныйОт корня, начинается с //home/student/project/README.md
ОтносительныйОт текущего каталогаproject/README.md
От домашнегоНачинается с ~~/project/README.md

Абсолютный путь работает откуда угодно, относительный — только из «своего» каталога. В скриптах и инструкциях для других людей используйте абсолютные пути.

$ cd /etc               # абсолютный путь
student@debian:/etc$ cd ..        # на уровень выше
student@debian:/$ cd home/student  # относительный: из / в home/student
student@debian:~$ cd /tmp
student@debian:/tmp$ cd -         # в предыдущий каталог
/home/student
student@debian:~$ cd /tmp; cd     # cd без аргументов — домой
student@debian:~$

Если каталога нет, команда сообщит об ошибке и вы останетесь на месте:

$ cd /nonexistent
-bash: cd: /nonexistent: Нет такого файла или каталога
05

Набирать меньше: Tab и история

Tab дополняет имена команд, файлов и каталогов. Наберите cd /et и нажмите Tab — оболочка допишет /etc/. Если вариантов несколько, второе нажатие Tab покажет их список. Дополнение заодно проверяет путь: если оно не срабатывает, скорее всего, в имени опечатка.

КлавишиДействие
↑ / ↓Предыдущая / следующая команда из истории
Ctrl+RПоиск по истории: набирайте часть команды, повторное нажатие — следующее совпадение
Ctrl+CПрервать выполняющуюся команду или стереть набранную строку
Ctrl+LОчистить экран (то же, что clear)
Ctrl+A / Ctrl+EВ начало / в конец строки
Ctrl+DВыйти из оболочки (на пустой строке)
$ history | tail -3
  41  cd /etc
  42  ls -l hostname
  43  history | tail -3
$ !42                     # повторить команду номер 42
ls -l hostname
-rw-r--r-- 1 root root 7 окт 10 19:15 hostname
Копирование и вставка в терминале: в консоли Linux и PuTTY выделенный мышью текст уже скопирован, вставка — правой кнопкой. В графических терминалах — Ctrl+Shift+C / V: Ctrl+C там занят прерыванием команды.
06

Справка: --help и man

У каждой команды есть встроенная справка. Короткая — опция --help:

$ ls --help
Использование: ls [ПАРАМЕТР]… [ФАЙЛ]…
Выдаёт информацию о ФАЙЛАХ (по умолчанию о текущем каталоге).
...
  -a, --all                  не скрывать записи, начинающиеся с .
...

Синтаксис в справке читается так: в квадратных скобках — необязательное, многоточие — можно повторить. ls [ПАРАМЕТР]… [ФАЙЛ]… значит: опций и файлов может быть сколько угодно, в том числе ни одного.

Полное руководство — man (manual):

$ man ls
Клавиша в manДействие
Пробел / bСтраница вперёд / назад
/слово EnterИскать слово; n — следующее совпадение
qВыйти

Если не помните, какая команда нужна, ищите по описаниям: man -k (или apropos). Одно и то же имя бывает в разных разделах руководства: 1 — команды, 5 — форматы файлов, 8 — команды администратора.

$ whatis ls passwd
passwd (1)           - изменяет пароль пользователя
passwd (5)           - файл паролей
ls (1)               - list directory contents
$ man 5 passwd             # формат файла /etc/passwd, а не команда

Не у всех команд есть отдельная страница man. cd, history, pwd — встроенные команды оболочки; справка по ним — help cd. Определить, встроенная команда или программа, помогает type:

$ type cd cp
cd — это встроенная команда bash
cp является /usr/bin/cp
Сообщения об ошибках выводятся на языке системы. Чтобы найти решение в интернете, полезно получить английский текст: LANG=C ls nofile выведет ls: cannot access 'nofile': No such file or directory. Переменная действует только на эту команду.

Ключевые выводы модуля

Запомните главное

  • Приглашение показывает пользователя, машину и каталог; # на конце — вы root
  • Команда = имя + опции + аргументы, через пробелы; регистр важен
  • Абсолютный путь начинается с /, относительный — от текущего каталога; ~ — домашний
  • cd .. — вверх, cd - — назад, cd — домой
  • Tab и Ctrl+R экономят время и предотвращают опечатки
  • Справка: --help — кратко, man — полно, help — для встроенных команд
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Модуль 01: Установка Все модули Модуль 03: Файлы