Базовый цикл взаимодействия с Bash #
Андрей Михайлович Васильев, 2024
Версии презентации
Разбор приглашения командного интерпретатора #
Каждое хорошее интерактивное приложение должно показывать пользователю, что оно ожидает от него ввод команды
Типичный вид приглашения Bash:
[andrey@work-pc ~]$andrey— имя пользователя, с правами которого будут выполняться команды@— разделительный знак, обозначающийнаwork-pc— название компьютера, на котором находится компьютер~— текущий рабочий каталог$— уровень прав текущего пользователя,$— обычный пользователь,#— суперпользователь
Другое типичное приглашение:
bash-4.4$Чтение ответов от команд #
Давайте введём некорректную команду 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
3df — отображение информации о занятом пространстве на файловых системах
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% /bootfree — информация об использовании оперативной памяти
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), послать сигнал завершения потока ввода