Глиф Учебники

Урок 1. Терминал и оболочка: первые команды

Курс «Командная строка Linux» · урок 1 из 10 · 5 минут чтения

Командная строка — способ управлять компьютером текстом: вы набираете команду, нажимаете Enter, система выполняет её и печатает ответ. Окно, в котором это происходит, называют терминалом, а набранные команды читает и выполняет оболочка (по-английски shell). В большинстве систем Linux оболочка по умолчанию — bash.

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

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

Эти слова часто путают, хотя означают разное:

Терминал $ whoami ivan показывает текст и передаёт клавиши команда Оболочка bash 1 читает строку 2 ищет программу 3 запускает её запуск Программа whoami делает работу и печатает ответ ivan ответ программы
Терминал передаёт набранную команду оболочке bash, оболочка запускает программу, а её ответ появляется в окне терминала.

Оболочек несколько:

ОболочкаГде встречается
bashпо умолчанию в Ubuntu, Debian, Linux Mint и многих других системах
shсамая простая оболочка по стандарту POSIX; в Ubuntu и Debian под этим именем работает dash
zshпо умолчанию в macOS, в Linux ставится отдельно

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

Терминал
$ echo $SHELL
/bin/bash

Как открыть терминал

Приглашение

Терминал ждёт команду после строки-приглашения:

Текст
ivan@laptop:~$

В блоках «Терминал» строки, которые начинаются с $, — это команды, остальное — ответ системы. Сам знак $ набирать не нужно. В блоках «Bash» — только команды, без ответа.

Первые команды

Терминал
$ whoami
ivan
$ pwd
/home/ivan
$ cd /etc
$ pwd
/etc
$ cd ..
$ pwd
/
$ cd -
/etc
$ cd
$ pwd
/home/ivan
/ etc home var ivan домашняя папка log вы здесь cd .. cd cd /etc
Из папки /var/log команда cd .. ведёт на уровень выше в /var, cd без аргументов — домой в /home/ivan, а cd /etc — по абсолютному пути.

Как устроена команда

Команда — это слова через пробел:

Bash
ls -l -a /etc

Короткие ключи можно склеить: ls -la — то же, что ls -l -a. У многих есть и длинная форма с двумя дефисами: ls --all — то же, что ls -a. Некоторым ключам нужно значение: head -n 5 файл покажет первые пять строк файла.

ls -l -a /etc аргумент — с чем работать ключи — меняют поведение команды имя команды — какую программу запустить склеить ключи ls -l -a = ls -la длинная форма ls -a = ls --all ключ со значением head -n 5 файл 5 — значение ключа -n
Команда ls -l -a /etc делится на имя, ключи и аргумент; короткие ключи склеиваются в -la, у -a есть длинная форма --all, а ключ -n берёт значение 5.

Регистр букв важен: ls — команда, а LS — ошибка; Notes.txt и notes.txt — два разных файла. Если в имени есть пробел, возьмите имя в кавычки: cd "Рабочий стол". Без кавычек команда получит два аргумента — «Рабочий» и «стол».

Справка

Помнить все ключи не нужно — справка есть в самой системе:

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

Оболочка помнит набранные команды:

История хранится в файле ~/.bash_history и дописывается, когда оболочка закрывается.

Tab и горячие клавиши

КлавишиЧто делают
Tabдописывает имя команды, файла или папки; если вариантов несколько, второе нажатие показывает их все
Ctrl+Cпрерывает работающую команду. В терминале это не «копировать»
Ctrl+Dна пустой строке закрывает оболочку, как exit
Ctrl+Lочищает экран, как clear
Ctrl+A и Ctrl+Eкурсор в начало и в конец строки
Ctrl+Uстирает всё от курсора до начала строки
Ctrl+Wстирает слово перед курсором
Ctrl+Shift+C и Ctrl+Shift+Vкопировать и вставить в большинстве терминалов Linux

Привыкайте к Tab с первого дня: он экономит время и спасает от опечаток в длинных именах.

Частые ошибки

Коротко

Проверьте себя

1. Чем оболочка отличается от терминала?
2. Вы в папке /var/log. Куда приведёт команда cd без аргументов?
3. Как повторить последнюю команду, добавив перед ней sudo?
4. После команды echo "Привет вместо приглашения появился знак >. Что случилось?