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