UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
$Заметьте, что мы задали
$ sh cx схв точности так, как сделал бы автоматически интерпретатор, если бы
cx$ cx схА как быть, если нужно работать с несколькими аргументами, например, заставить программу
cxchmod +x $1 $2 $3 $4 $5 $6 $7 $8 $9(Это годится только для девяти аргументов, так как конструкция
$10chmodС учетом упомянутой выше трудности интерпретатор предоставляет сокращенную запись
$*cxchmod +x $*что является эффективным при любом числе аргументов.
Используя
$*lcm$ cd /usr/you/bin$ cat lc#lc: подсчет числа строк в файлахwc -l $*$ cat m#m: точный способ послать почтуmail $*$Обе команды можно осмысленно использовать и без аргументов. Если нет аргументов,
$*wcmail$ lc /usr/you/bin/* 1 /usr/you/bin/cx 2 /usr/you/bin/lc 2 /usr/you/bin/m 1 /usr/you/bin/nu 2 /usr/you/bin/what 1 /usr/you/bin/where 9 total$ ls /usr/you/bin | lc 6$Эти и другие команды, описываемые в настоящей главе, являются командами пользователя, т.е. вы создаете их для себя и помещаете в свой каталог
/binshellАргументами командного файла не обязательно должны быть имена файлов. Рассмотрим в качестве примера поиск в каталоге, где хранится личный телефонный справочник. Если у вас есть файл с именем
/usr/you/lib/phone-bookdial-a-joke 212-976-3838dial-a-prayer 212-246-4200dial santa 212-976-3636dow jones report 212-976-4141то для поиска в нем можно воспользоваться командой
greplibgrep411$ echo 'grep $* /usr/you/lib/phone-book' > 411$ cx 411$ 411 jokedial-a-joke 212-976-3838$ 411 dialdial-a-joke 212-976-3838dial-a-prayer 212-246-4200dial santa 212-976-3636$ 411 'dow jones'grep: can't open jones$Последний пример вскрывает потенциальную проблему: хотя
dow jones411411grep$ grep dow jones /usr/you/lib/phone-bookчто, очевидно, неверно.
Один из возможных путей обойти эту проблему основан на том, как интерпретатор трактует кавычки. Хотя все, что заключено в
'...'"..."$`...`$ grep "$*" /usr/you/lib/phone-bookто
$*grep$ 411 dow jonesdow jones report 212-976-4141$Кстати, можно сделать с помощью флага
-ygrep411$ grep -y pattern ...При наличии флага
-yБолее подробно аргументы команд мы рассмотрим в гл. 5, но одно важное замечание необходимо сделать здесь. Аргумент
$0cx $0"cx"$0234
