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