13. Работа в
командной строке. Сриптовое программирование в ОС Linux.
Важнейшим из пользовательских процессов является командная оболочка (она же командный интерпретатор, или просто shell). Именно она обеспечивает взаимодействие пользователя с системой в текстовом режиме, позволяя вводить команды. Не нужно, увлекшись удобствами графического интерфейса, недооценивать командную строку. Во-первых, многие административные задачи могут быть выполнены только оттуда; во-вторых, командная строка — самое удобное средство автоматизации рутинных процедур.
Командой в Linux считается все, что может быть исполнено: исполняемые файлы, встроенные команды оболочки, псевдонимы команд, пользовательские функции, файлы сценариев (скрипты) — заранее подготовленные последовательности команд в текстовом виде.
Для Linux разработано много командных интерпретаторов. Вот несколько из них:
sh Bourne shell, оболочка Борна, стандарт для многих UNIX-по-
добных систем;
bash . . . Bourne Again shell, еще одна оболочка Борна;
csh С shell, оболочка Си: синтаксис ее командного языка похож на
синтаксис языка С;
Список всех установленных в системе программ-оболочек находится в файле / e t c / s h e l l s. (/etc - Каталог для системных конфигурационных файлов. Здесь хранится информация о специфических настройках данной системы: информация о зарегистрированных пользователях, доступных ресурсах, настройках различных программ).
Примеры команд:
login запрос от пользователя имени и пароля (запрос от системы к пользователю) для входа в систему( по умолчанию, при наборе пароля, он не отображается).
shutdown останавливает систему и предотвращает повреждение файловой системы при этом, но,используется только при работе в консольном режиме.
halt быстрое и корректное выключение системы.
reboot корректное выключение с последущей загрузкой.Перезагрузка.
vmstat выдаёт сведения о процессах, памяти и загруженности центрального процессора.
date отображает текущие дату и время, по системным часам ядра.
pwd отображает полный путь к текущему каталогу.
uname выводит информацию об используемой операционной системе (при вводе дополнительных параметров команды , выдаёт довольно много информации).
history показывает пронумерованный список команд, которые Вы выполняли в этом и предыдущем сеансе. Если в списке историии их довольно много, то увидите последние.
kill завершить процесс (необходимо указать какой).
Скриптовое программирование в ОС Linux
Некоторые возможности bash: редактирование и автозаполнение; история и повторный ввод команд; контроль заданий; функции shell и псевдонимы; массивы; математические операции; кавычки ANSI C; раскрытие "~"; раскрытие "{}"; работа с подстроками; раскрытие косвенных переменных; расширенные возможности ввода-вывода; контроль встроенных команд; помощь; стек для хранения каталогов; режим совместимости с POSIX; интернационализация; определение времени выполнения команды.
В настоящее время командная оболочка bash (bash shell) входит во многие системы Linux и UNIX и является наиболее распространенной оболочкой в Linux.
Одно из достоинств функций и скриптов shell состоит в возможности изменить поведение единственной функции или скрипта путем передачи этой функции или скрипту параметров.
теперь мы можете определить простую функцию, чтобы сказать, сколько параметров она содержит, и отобразить их
Параметры функции
[~]$ testfunc
() { echo "$# parameters"; echo "$@"; }
[~]$ testfunc
0 parameters
[~]$ testfunc
a b c
3 parameters
a b c
[~]$ testfunc
a "b c"
2 parameters
a b c
Скрипты shell обращаются с параметрами таким же образом, как и функции.
Параметры скрипта shell
[~]$ cat testfunc.sh
#!/bin/bash
echo "$# parameters"
echo "$@";
[~]$ ./testfunc.sh a
"b c"
2 parameters
a b c
shell может ссылаться на список передаваемых параметров типа $* или $@ и что от того, заключены эти выражения в кавычки или нет, зависит, как они интерпретируются. Используете ли вы $*, "$*", $@ или "$@", мы не увидим больших различий в выводе приведенной выше функции, но в более сложном варианте различия будут значительны, поскольку мы хотим проанализировать параметры или, возможно, передать какие-то из них другой функции или скрипту.