UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Как уже отмечалось, описание интерпретатора разделено на две части. В этой главе от простейших возможностей, показанных в гл. 1, мы перейдем к рассмотрению некоторых необычных, но широко используемых конструкций, таких, как метасимволы, кавычки, новые команды с переданными им аргументами, переменные
shellshell3.1 Структура командной строки
Прежде чем продолжить рассмотрение, нужно уточнить, что такое команда и как она интерпретируется
shellСамая простая команда состоит из одного слова, обычно имени файла, предназначенного для выполнения (позднее вы познакомитесь с другими типами команд):
$ whoyou tty2 Sep 28 07:51jpl tty4 Sep 28 08:32$Команда, как правило, завершается символом перевода строки, но может завершаться и точкой с запятой:
$ date;Wed Sep 28 09:07:15 EDT 1983$ date; whoWed Sep 28 09:07:23 EDT 1983you tty2 Sep 28 07:51jpl tty4 Sep 28 08:32$Однако выполнение команды не начнется, пока вы не нажмете клавишу RETURN. Обратите внимание на то, что интерпретатор выдает только одно приглашение после нескольких команд, но если не учитывать этого, то ввод
$ date; whoидентичен вводу двух команд в разных строках. В частности, команда
whodate$ date; who | wcWed Sep 28 09: 08:48 EDT 19832 10 60$Возможно, вы получите не то, что ожидали, поскольку только результат команды
whowcwhowcdateshell'|'';'$ (date; who)Wed Sep 28 09:11:09 EDT 1983you tty2 Sep 28 07:51jpl tty4 Sep 28 08:32$ (date; who) | wc3 16 89$Результат выполнения команд
datewhoИнформацию, поступающую по программному каналу, можно с помощью команды
teeteeshell$ (date; who) | tee save | wc3 16 89 $ cat saveWed Sep 28 09:13:22 EDT 1983you tty2 Sep 28 07:51jpl tty4 Sep 28 08:32$ wc <save3 16 48$Команда
teeteeВ качестве еще одного символа, завершающего команду, применяют амперсанд (
&&$ long-running-command &5273 $ Имея возможность группировать команды, получаем некоторые интересные способы применения фоновых процессов. Команда
sleep$ sleep 5$ $ (sleep 5; date) & date5278Wed Sep 28 09:18:20 EDT 1983 $ Wed Sep 28 09:18:25 EDT 1983 через 5 секунд дата
Фоновый процесс начинается, но сразу "засыпает"; тем временем вторая команда
datesleepdate$ (sleep 300; echo Чай готов) &5291
