UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Есть еще один способ установить значение переменной в порожденном интерпретаторе — присвоить его явно в командной строке перед самой командой:
$ echo 'echo $x' >echox$ cx echox$ echo $xHello x не определено в порожденном интерпретаторе
$ x=Hi echoxHi $(Первоначально присваивания всюду в командной строке передавались команде, но это противоречило
dd(1)Операцию
'.'/usr/gamesPATH$ ls /usr/games | grep fortfortune$ fortunefortune: not found$ echo $PATH:/usr/you/bin:/bin:/usr/bin$ PATH=/usr/games fortuneПозвони в звонок; закрой книгу; задуй свечу.$ echo $PATH:/usr/you/bin:/bin:/usr/bin $ cat /usr/you/bin/games $ . games$ fortuneНепродуманная оптимизация - источник всех бед - Кнут$ echo $PATH:/usr/you/bin:/bin:/usr/bin:/usr/games$Можно использовать оба средства в одном командном файле. Вы можете несколько видоизменить команду
gamesPATHPATH/usr/games$ cat /usr/you/bin/gamesPATH=$PATH:/usr/games $* $ cx /usr/you/bin/games$ echo $PATH:/usr/you/bin:/bin:/usr/bin $ games fortuneГотов отдать свою правую руку, чтобы одинаково владеть обеими$ echo $PATH:/usr/you/bin:/bin:/usr/bin $ . games$ echo $PATH:/usr/you/bin:/bin:/usr/bin:/usr/games$ fortuneТот, кто медлит, иногда спасается$При первом обращении к games командный файл выполняется в порожденном интерпретаторе, в котором переменная
PATH/usr/games$*PATHgamesДля того чтобы значение переменной было доступно в порожденном интерпретаторе, следует использовать команду
exportshell$ x=Hello$ export x$ sh $ echo $xHello $ x='Good Bye' $ echo $xGood Bye$ ctl-d $ $ echo $xHello $Семантика команды
export!edPATHНОМЕПочему в значение переменной
PATH3.7 Еще раз о переключении ввода-вывода
Понятие стандартного потока диагностики было введено для того, чтобы сообщения об ошибках всегда появлялись на терминале:
$ diff file1 file2 >diff.outdiff: file2: No such file or directory$Без сомнения, сообщения об ошибке должны появляться подобным образом — было бы крайне неприятно, если бы они исчезли в файле
diff.outdiffВ начале выполнения каждой программы определены по умолчанию три файла, обозначаемые небольшими целыми числами и называемые дескрипторами файла (мы рассмотрим их в гл. 7). Со стандартными входным (0) и выходным (1) потоками вы уже знакомы: они часто переключаются на файл или программный канал. Последний поток с номером 2 представляет собой стандартный поток диагностики и обычно предназначается для вывода на терминал.
