-->

UNIX — универсальная среда программирования

На нашем литературном портале можно бесплатно читать книгу UNIX — универсальная среда программирования, Керниган Брайан Уилсон-- . Жанр: ОС и Сети / Интернет. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
UNIX — универсальная среда программирования
Название: UNIX — универсальная среда программирования
Дата добавления: 16 январь 2020
Количество просмотров: 432
Читать онлайн

UNIX — универсальная среда программирования читать книгу онлайн

UNIX — универсальная среда программирования - читать бесплатно онлайн , автор Керниган Брайан Уилсон

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями

shell.

 

Для программистов-пользователей операционной системы UNIX.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 28 29 30 31 32 33 34 35 36 ... 187 ВПЕРЕД
Перейти на страницу:

$

(Если в строке, следующей за командой

echo
, есть символ ctl-g, то при появлении ее на экране зазвонит звонок.) В этих примерах нужны скобки, так как приоритет
'&'
выше, чем у
';'
.

Символ

&
может завершать команды, а поскольку конвейеры являются командами, в скобках для запуска конвейеров как фоновых процессов нет необходимости, поэтому

$ pr файл | lpr &

позволяет выдать файл на печатающее устройство, не ожидая окончания выполнения команды. Использование скобок дает тот же эффект, но требует введения большего числа символов:

$ (pr файл | lpr ) &
To же, что и в предыдущем примере

Большинство команд допускает наличие аргументов в командной строке, таких, как файл в предыдущем примере (аргумент команды

pr
). Аргументами служат слова, разделенные пробелами и символами табуляции, которые обычно именуют файлы, предназначенные для обработки командой. Однако они рассматриваются просто как строки, и программа может интерпретировать их любым подходящим для нее способом. Например, команда pr допускает имена файлов, которые нужно напечатать, команда
echo
посылает эхо своих аргументов без всякой интерпретации, а первый аргумент команды grep специфицирует строку-шаблон для поиска. И конечно, многие команды имеют необязательные параметры (флаги), задаваемые аргументами, начинающимися со знака “
-
”.

Различные специальные символы, интерпретируемые

shell
, такие, как
<
,
>
,
|
,
;
и
&
, не являются аргументами команд, запускаемых интерпретатором. Они управляют самим процессом запуска. Например,

$ echo Hello > junk

требует, чтобы интерпретатор запустил команду

echo
с одним аргументом
Hello
и поместил выходной поток в файл
junk
. Строка
> junk
не является аргументом команды
echo
; она интерпретируется
shell
, и
echo
никогда ее "не увидит". На самом деле, данная строка может и не быть последней в командной строке:

$ > junk echo Hello

Это идентичный запуск, хотя и менее очевидный.

Упражнение 3.1

В чем состоит различие между следующими командами?

$ cat file | pr

$ pr <file

$ pr file

(С течением времени операция переключения

<
потеряла свою связь с программными каналами; "
cat file |
" считается более естественным, чем "
< file
".)

3.2 Метасимволы

Интерпретатор распознает еще ряд символов как специальные. Наиболее часто используется звездочка

*
, указывающая, что нужно искать в каталоге имена файлов, у которых вместо
*
может быть любая последовательность символов. Например,

$ echo *

есть не что иное, как некое подобие команды

ls
. В гл. 1 мы не отметили, что во избежание проблем с именами
'.'
и
'..'
, которые присутствуют в любом каталоге, символы подстановки в именах файлов нельзя применять к именам файлов, начинающимся с точки. Правило таково: символы подстановки в именах файлов действуют на имена файлов, начинающихся с точки, только в том случае, если точка явно задана в шаблоне. Как обычно, "рассудительная" команда
echo
прояснит ситуацию:

$ ls

.profile

junk

temp

$ echo *

junk temp

$ echo .*

. .. .profile

$

Символы со специальным значением, подобные

*
, называются метасимволами. Существует множество метасимволов (в табл. 3.1 приводится их полный список, но некоторые символы мы обсудим только в гл. 5).

>
prog > file
— переключить стандартный выходной поток в файл
>>
prog >> file
— добавить стандартный выходной поток к файлу
<
prog < file
— извлечь стандартней выходной поток из файла
|
p1 | p2
— передать стандартный выходной поток
p1
как стандартный выходной поток для
p2
<<str
"Документ здесь": стандартный выходной поток задается в последующих строках до строки, состоящей из одного символа
str
*
Задает любую строку, состоящую из нуля или более символов, в имени файла
?
Задает любой символ в имени файла
[ccc]
Задает любой символ из
[ccc]
в имени файла (допустимы диапазоны, такие, как
0-9
или
a-z
)
;
Завершает команды:
p1; p2
— выполнить
p1
, затем
p2
&
Выполняет аналогичные функции, но не ждет окончания
p1
`...`
Инициирует выполнение команд(ы) в
...
;
`...`
заменяется своим стандартным выводом
(...)
Инициирует выполнение команд(ы) в
...
в порожденном
shell
{...}
Инициирует выполнение команд(ы) в
...
в текущем вызове shell (используется редко)
$1, $2, ...
Заменяются аргументами командного файла
$var
Значение переменной
var
в программе на языке
shell
${var}
Значение
var
; исключает коллизии в случае конкатенации переменной с последующим текстом (см. также табл. 5.3)
c
— использовать непосредственно символ
c
,
перевод строки отбрасывается
'...'
Означает непосредственное использование
"..."
Означает непосредственное использование, но после того, как
$
,
`...`
и
будут интерпретированы
#
В начале слова означает, что вся остальная строка рассматривается как комментарий (но не в седьмой версии)
var=value
Присваивает
value
переменной
var
p1 && p2
Предписывает выполнить
p1
; в случае успеха выполнить
p2
p1 || p2
Предписывает выполнить
p1
; в случае неудачи выполнить
p2
1 ... 28 29 30 31 32 33 34 35 36 ... 187 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название