Базовый цикл взаимодействия с Bash
#
Андрей Михайлович Васильев, 2024
Версии презентации
Разбор приглашения командного интерпретатора
#
Каждое хорошее интерактивное приложение должно показывать пользователю, что оно
ожидает от него ввод команды
Типичный вид приглашения Bash:
andrey
— имя пользователя, с правами которого будут выполняться команды
@
— разделительный знак, обозначающий на
work-pc
— название компьютера, на котором находится компьютер
~
— текущий рабочий каталог
$
— уровень прав текущего пользователя, $
— обычный пользователь, #
— суперпользователь
Другое типичное приглашение:
Чтение ответов от команд
#
Давайте введём некорректную команду aoeucrg
:
andrey@home-pc:~$ aoeucrg
В результате обработки команды Bash сообщит, что команда неверна:
bash: aoeucrg: команда не найдена
andrey@home-pc:~$
Не стоит рассчитывать, что вы «ввели всё правильно» и «оно должно было правильно
отработать» — всегда читайте результат работы команды
Классические приложения UNIX не выводят ничего, если они выполнили свою задачу
без ошибок
Базовое взаимодействие с командным интерпретатором
#
Сразу за приглашением располагается поле для ввода текста, предоставляющее
большое количество функций:
- Клавиши влево и вправо позволяют передвигать курсор
- Работают клавиши Delete и Backspace
- Существует несколько десятков сочетаний клавиш, упрощающих редактирование
команды
История команд
#
Последние 1000 введённых команд хранятся в истории
- Клавиши вверх-вниз позволяют двигаться по истории команд
- Выбранную команду из истории можно редактировать
Решение проблемы при вводе команды
#
Зачастую при написании команды можно допустить ошибки, особенно когда команда
занимает более трёх символов
Плохой подход к решению:
- Вы ввели команду
- Bash сообщил, что команда неверна
- Вы начинаете ввод команды заново
Правильный подход к решению:
- Вы ввели команду
- Bash сообщил, что команда неверна
- Вы возвращаетесь к предыдущей команде (стрелка вверх)
- Вы исправляете ошибку в команде и отправляете её на исполнение
Ряд рабочих команд
#
date
— получение информации о текущей дате и времени
andrey@home-pc:~$ date
Ср 02 сен 2020 11:19:38 MSK
Ср 02 сен 2020 11:19:38 MSK
является результатом работы команды date
После выполнения команды командный интерпретатор опять запрашивает ввод:
andrey@home-pc:~$ date
Ср 02 сен 2020 11:19:38 MSK
andrey@home-pc:~$
cal
— приложение для отображения календарей на месяц или год
andrey@home-pc:~$ cal
Сентябрь 2024
Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
3
df
— отображение информации о занятом пространстве на файловых системах
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@home-pc:~$ free
total used free shared buff/cache available
Mem: 32889440 6600560 6774420 337268 19514460 25557628
Swap: 16777212 0 16777212
Аргументы
#
В самом простейшем случае команду можно описать следующим образом:
приложение аргумент-1 аргумент-2 аргумент-3
- Введённая строка разделяется на слова, разделитель — непечатные символы
(пробелы, табуляция и т.д)
- Первое слово — приложение, которое необходимо запустить
- Последующие слова передаются приложению в виде аргументов
- Приложение может использовать аргументы во время своей работы
Сигнатура стартовой функции
#
Рассмотрим стартовую функцию приложения, написанного на языке Си:
int main(int argc, char *argv[]) {
...
}
argc
— количество переданных аргументов
argv
— массив строк, содержащих аргументы
За логическую обработку аргументов отвечает само приложение
- Для каждого хоть сколько нибудь популярного языка программирования есть
библиотека, облегчающая задачу обработки аргументов
- Приложения, использующие общие библиотеки, обрабатывают аргументы согласно
общей логике, заложенной в библиотеке
Примеры использования аргументов
#
cal -3
— выводит три месяца, содержащих дату для отображения
cal -Y
— вывести 12 месяцев, начинающих с месяца, содержащего дату
free -h
— вывести информацию о памяти в удобном для человека формате
df -h
— вывести информацию о занятом пространстве на файловых системах в
удобном для человека формате
date +%F
— вывести текущую дату
date +%T
— вывести текущий момент времени
Завершение работы терминала
#
По окончании работы эмулятор терминала можно завершить двумя способами:
- Завершить его работу как графическое приложение
- Завершить работу интерпретатора команд
Рекомендуется использовать последний подход:
- Удобно закрыть вкладку эмулятора терминала
- Удобно завершить удалённую сессию
Для окончания работы интерпретатора достаточно
- либо ввести команду
exit
- либо при пустой командной строке наберите сочетание клавиш
Ctrl-D
(Нажать
Ctrl и не отпуская её нажать на клавишу d), послать сигнал завершения потока
ввода