Знакомство с командным интерфейсом GNU/Linux #
Андрей Михайлович Васильев, 2022
Версии презентации
Графический пользовательский интерфейс #
Пользователи сейчас приучены к графическому интерфейсу:
- Интерфейсы мобильных устройств, взаимодействие с помощью касания
 - Интерфейсы компьютеров, взаимодействие с помощью клавиатуры и мыши
 - Интерфейсы телевизоров, взаимодействие с помощью пульта
 - Интерфейсы игровых консолей, взаимодействие с помощью контроллера
 
«Продвинутое» использование интерфейса компьютера #
- Использование раздельных графических пространств для разделения приложений по задачам
 - Множество приложений, включая интерфейс ОС, предлагают использовать сочетания клавиш для быстрого выполнения действий
 
Что такое командный интерфейс #
CLI, command line interface, командный интерфейс — это способ взаимодействия с ОС, при которой пользователь вводит текстовые команды с клавиатуры, а приложение-интерпретатор их выполняет
Процесс взаимодействия выглядит следующим образом:
- Командный интерпретатор показывает приглашение для ввода
 - Пользователь вводит текстовую команду и нажимает «Ввод»
 - Командный интерпретатор обрабатывает строку
- Если команда была введена неверно, то интерпретатор сообщит об ошибке
 - Если команда была введена корректно, то задача будет выполнена
 
 - Пока команда выполняется, то ввод и вывод передаются команде
 - После завершения команды интерпретатор опять показывает приглашение
 
Какие бывают командные интерпретаторы #
Командный интерпретатор - это обычное приложение, которое запускается средствами ОС, следовательно под каждой ОС может быть установлено множество таких интерпретаторов
Типичные представители интерпретаторов:
- Windows: 
cmd,PowerShell - MacOS: 
bash,zsh - Linux: 
bash,zsh,fish,dashи ещё штук 20 
Мы будем рассматривать BASH, Bourne Again Shell, в честь создателя оригинального приложения sh Стива Борна
Эмуляторы терминала #
Для работы с командным интерпретатором необходимы другие приложения — эмуляторы терминала
Они предоставляют графический интерфейс, в котором можно взаимодействовать с нужными командными интерпретаторами
- Windows-приложения: ConEmu, Mintty, Windows Terminal
 - Linux-приложения: gnome-terminal, console, terminator, xfce4-terminal, xterm
 - macOS-приложения: Terminal, iTerm2
 
Linux также обеспечивает возможность работы с интерпретатором без графического интерфейса. Они доступны с помощью сочетания клавиш Ctrl+Alt+F1 (F2, F3, …)
Разбор приглашения командного интерпретатора #
Каждое хорошее интерактивное приложение должно показывать пользователю, что оно ожидает от него ввод данных. Данными для командного интерпретатора являются команды от пользователя
Типичный вид приглашения BASH:
[andrey@andrey-home-pc ~]$
andrey— имя пользователя, с правами которого будут выполняться команды@— разделительный знак, обозначающийнаandrey-home-pc— название компьютера, на котором находится компьютер~— текущий рабочий каталог$— уровень прав текущего пользователя,$— обычный пользователь,#— суперпользователь
Чтение ответов от команд #
Давайте введём некорректную команду aoeucrg:
andrey@andrey-home-pc:~$ aoeucrg
В результате обработки команды bash сообщит, что команда неверна:
bash: aoeucrg: команда не найдена
andrey@andrey-home-pc:~$
Не стоит рассчитывать, что вы «ввели всё правильно» и «оно должно было правильно отработать» — всегда читайте результат работы команды
Классические приложения UNIX не выводят ничего, если они выполнились без ошибок
Базовое взаимодействие с командным интерпретатором #
При вводе команды её можно редактировать:
- Клавиши влево и вправо позволяют передвигать курсор
 - Работают клавиши Delete и Backspace
 - Есть ряд других горячих клавиш, упрощающие передвижение курсора
 
Последние 1000 введённых команд хранятся в истории. Клавиши вверх-вниз позволяют двигаться по истории команд. Команду из истории можно редактировать
Решение проблемы с командой #
Плохо: при возникновении проблемы начать вводить команду заново
Хорошо: если в команде была ошибка, тогда надо вызвать из истории последнюю команду, отредактировать её и выполнить заново
Ряд рабочих команд #
date — получение информации о текущей дате и времени
andrey@andrey-home-pc:~$ date
Ср 02 сен 2020 11:19:38 MSK
cal и ncal — приложения для отображения календарей на месяц или год
andrey@andrey-home-pc:~$ ncal
    Сентябрь 2020
Пн     7 14 21 28
Вт  1  8 15 22 29
Ср  2  9 16 23 30
Чт  3 10 17 24
Пт  4 11 18 25
Сб  5 12 19 26
Вс  6 13 20 27
Ещё пара рабочих команд #
df — отображение информации о занятом дисковом пространстве
andrey@andrey-home-pc:~$ df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdd3          111G          56G   56G           51% /
/dev/sde1          466G         384G   82G           83% /home
/dev/sdd2          454M          89M  362M           20% /boot
free — информация об использовании оперативной памяти
andrey@andrey-home-pc:~$ free
              total        used        free      shared  buff/cache   available
Mem:       32889440     6600560     6774420      337268    19514460    25557628
Swap:      16777212           0    16777212
Завершение работы терминала #
Для окончания работы терминала достаточно либо ввести команду exit, либо при пустой командной строке наберите сочетание клавиш Ctrl-D