Основы работы в командной оболочке BASH
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Дисциплина:
«Операционные системы»
Преподаватель:
Алексеев Кирилл Анатольевич
учебный год 2020/2021
online.mirea.ru
Тема 2
Оболочки операционных систем
Занятие 2.4
лекция
ОСНОВЫ РАБОТЫ В КОМАНДНОЙ ОБОЛОЧКЕ
BASH
online.mirea.ru
ОСНОВЫ РАБОТЫ В КОМАНДНОЙ ОБОЛОЧКЕ BASH
Учебные вопросы:
1) Каналы и перенаправления команд в bash.
2) Использование переменных в bash.
3) Использование кавычек в bash.
1)потоками
Литература
Основная:
1) Купер Мендель. Искусство программирования на языке сценариев командной
оболочки.
2) Bash Reference Manual (http://www.gnu.org/software/bash/manual/bash.html)
Дополнительная:
1) Справочные страницы ОС GNU/Linux (man <имя команды>)
online.mirea.ru
Команды в bash
Синтаксис команды
<имя> [<ключи>] [<аргументы>]
<> - обязательный элемент, [] – опциональный элемент
Виды команд
• запускающие внешние программы
$ /bin/pwd
/home/student
• встроенные
$ pwd
/home/student
Структура строки приглашения:
userx@acer-pc:~$
текущий
пользователь
имя
сетевого узла
userx@acer-pc:/home/userx#
текущий пользователь не является
суперпользователем
текущий пользователь является
суперпользователем
текущий каталог
~ - псевдоним домашнего каталога текущего пользователя:online.mirea.ru
/home/userx
1. Каналы и перенаправления команд
в bash
Каждому процессу доступны по меньшей мере три информационных
канала: “стандартный ввод” (STDIN), “стандартный вывод” (STDOUT) и
“стандартная ошибка” (STDERR).
Для систем UNIX используется унифицированная модель ввода-вывода, в
которой каждому каналу присваивается целое число, именуемое файловым
дескриптором. Точное число (номер), назначаемое каналу, обычно не имеет
значения, но каналам STDIN, STDOUT и STDERR гарантированно соответствуют
файловые дескрипторы 0, 1 и 2 соответственно, чтобы обеспечить безопасное
обращение к ним по номерам. В контексте интерактивного окна терминала
канал STDIN обычно считывает данные с клавиатуры, а оба канала STDOUT и
STDERR записывают свои выходные данные на экран.
online.mirea.ru
Перенаправления потоков команд
Командная оболочка интерпретирует символы и <, > и >> как инструкции по
изменению направления передаваемых командой данных в файл или принимаемых
данных из файла. Символ < связывает канал STDIN с содержимым некоторого
существующего файла. Символы > и >> перенаправляют поток STDOUT; причем символ
> используется для замены содержимого файла, а >> – для добавления данных в его
конец. Символ >& используется для перенаправления потоков STDOUT и STDERR в одно
и то же место (файл), символ 2> используется для перенаправления только потока
STDERR.
Примеры:
1. Сохранение строки в файл.
$ echo "Это тестовое сообщение." > /tmp/mymessage
2. Отправка сообщения с файлом по электронной почте.
$ mail -s "Mail test" user < /tmp/mymessage
3. Вывод потока STDOUT с отбрасыванием всех сообщений об ошибках
$ find / -name core 2> /dev/null
online.mirea.ru
Связывание команд в bash
Связывание канала STDOUT одной команды с каналом STDIN другой
<команда> | <команда>
ps -ax | grep httpd
cut -d: -f7 < /etc/passwd | sort -u
Выполнение последующей команды только в случае успешного
выполнения предыдущей
<команда> && <команда>
lpr /tmp/t2 && rm /tmp/t2
Выполнение последующей команды в случае неуспешного выполнения
предыдущей
<команда> || <команда>
ср --preserve --recursive /etc/* /spare/backup || echo "Резервное копирование не
выполнено"
online.mirea.ru
Запись команд в терминале (файле сценария)
Несколько команд в одной строке
(независимое выполнение команд)
<команда>; <команда>
gnome-terminal; gedit
Перенос длинной строки
<команда> \
<продолжение команды>
for d in "/home/sales /home/dbs /data1"; do find $d -iname "*.bak"
>> /tmp/list; done
online.mirea.ru
2. Использование переменных в bash
Инициализация переменных
<переменная>=<значение>
etcdir='/etc'
Использование переменных
<команда/выражение> $<переменная>
$<переменная>
${<переменная>}
$ echo "Saved ${rev}th version of mdadm.conf."
Saved 8th version of mdadm.conf.
online.mirea.ru
Переменные среды
Переменная среды (англ. environment variable) – текстовая
переменная операционной системы, хранящая какую-либо
информацию – например, данные о настройках системы.
Переменные среды устанавливаются пользователем или
сценариями оболочки.
Установка переменных среды
export <переменная>[=<значение>]
export PATH=$PATH:/opt/local/bin (установка значения переменной
окружения PATH)
echo $PATH (просмотр установленного значения)
online.mirea.ru
Рекомендации по использованию переменных в bash
1. Переменные среды или переменные, считанные из файлов глобальной
конфигурации, как правило записываются в верхнем регистре:
LANG
RANDOM
LC_COLLATE
LC_ALL
PWD
2. Имена локальных переменных – строчные, а отдельные их компоненты
разделяются символами подчеркивания:
myvar=123
$dir_for_create
3. Имена всех переменных чувствительны к регистру:
$PATH != $path
4. Команды для переменных среды, которые должны быть установлены при
входе в систему (доступны при открытии терминала), должны быть включены в
файл ~/.profile, ~/.bashrc или ~/.bash_profile (зависит от дистрибутива ОС Linux).
online.mirea.ru
Примеры использования переменных
$ export LANG=ru_RU.UTF8
$ export LC_ALL=ru_RU.UTF8
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=${PATH}:/usr/local/mpi/bin
$ export PATH
$ set
#комментарий: вывести список автоматически определенных переменных
echo "Информация о пользователе $USER:"
echo UID: $UID
echo Домашний каталог: $HOME
var1=50
var2=-120
var3=test
var4="текстовая строка"
НЕ ДОЛЖНО БЫТЬ
ПРОБЕЛЬНЫХ СИМВОЛОВ
online.mirea.ru
3. Использование кавычек в bash
Строки в двойных кавычках
Служат субъектами для универсализации файловых имен (замены реальных
символов в имени и расширении файла универсальными, т.е. такими
метасимволами, как “*” и “?”) и для раскрытия переменных (замены
переменных их значениями).
Строки в одинарных кавычках
Служат для полного цитирования заключенной между ними строки
Примеры:
$ mylang="русский язык"
$ echo " Я знаю ${mylang}."
Я знаю русский язык.
$ echo 'Я знаю ${mylang}.'
Я знаю ${mylang}.
online.mirea.ru
3. Использование кавычек в bash
Обратные апострофы
(также известные как обратные галочки, левые кавычки, левые одиночные
кавычки или открывающие кавычки) интерпретируются аналогично двойным
кавычкам, но несут при этом дополнительную нагрузку. Эта нагрузка состоит в
интерпретации содержимого такой строки, как команды оболочки, выполнении
этой команды и замене строки результатом выполнения этой команды.
$ echo "В файле passwd `wc -1 /etc/passwd` строк"
В файле passwd 28 строк.
online.mirea.ru
Пути в bash
Структура каталогов типовой ОС семейства GNU/Linux
online.mirea.ru