UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
$ echo $PATH | sed 's/^:/./> s/::/:.:/g> s/:$/:./> s/:/ /g'. /usr/you/bin /bin /usr/bin$Мы могли бы записать это с помощью четырех отдельных команд
sedsedПосле задания каталогов в компонентах
PATHtest(1)test"test -r файл""test -w файл"test -х"test -f файл"Каждая команда вырабатывает код завершения — значение, передаваемое интерпретатору и показывающее, что произошло. Это небольшое целое число, которое устанавливается по соглашению. Так, нуль может означать "истину" (команда успешно завершена), а ненулевое значение трактуется как "ложь" (выполнение команды было неудачным). Обратите внимание на то, что выбранные здесь значения противоположны значениям истины и лжи в языке Си.
Поскольку ложь может представлять множество различных значений, причина неудачи обозначается кодом завершения по лжи. Например, команда grep возвращает 0, если произошло сопоставление, 1 — если сопоставления не было, и 2 — в случае ошибки в шаблоне или именах файлов. Каждая программа возвращает код завершения, хотя обычно нас не интересует его значение. Команда
testИнтерпретатор хранит код завершения последней программы в переменной
$?$ cmp /usr/you/.profile /usr/you/.profile$ $ echo $?0 $ cmp /usr/you/.profile /usr/mary/.profile/usr/you/.profile /usr/mary/.profile differ: char 6, line 3$ echo $?1 $У некоторых команд, таких, как
cmpgrep-sifshellif командаthen команды, если условие верноelse команды, если условие ложноfiМестоположение символов перевода строк очень важно:
fithenelseОператор
ifcasetestiftestcasetestcaseif$ case "$1" inhello) commandesacвыполняется быстрее, чем
if test "$1"==hellothen commandfiЭто одна из причин, по которой в языке
shellcaseifcasetestifИтак, теперь мы готовы воспользоваться первой версией команды
which$ cat which# which cmd: which cmd in PATH is executed, version 1case $# in0) echo 'Usage: which command' 1>&2; exit 2esacfor i in `echo $PATH | sed 's/^:/.:/ s/::/:.:/g s/:$/:./ s/:/ /g'`do if test -f $i/$1 # use test -x if you can then echo $i/$1 exit 0 # found it fidoneexit 1 # not found
