UNIX — универсальная среда программирования - Керниган Брайан Уилсон
$ echo hello world
hello world
$
Но аргументы могут формироваться путем выбора по шаблону. Так, команда
$ echo ch1.*
перечисляет имена всех файлов в гл. 1,
$ echo *
перечисляет имена всех файлов текущего каталога в алфавитном порядке,
$ pr *
выводит на печать содержимое всех ваших файлов (в алфавитном порядке), а
$ rm *
удаляет все файлы текущего каталога. (Лучше быть абсолютно уверенным, что вы действительно этого хотите!)
Символ
*
$ rm *.save
удалит все файлы, оканчивающиеся на
.save
Заметьте, что все имена файлов выбираются в алфавитном порядке, который отличается от числового. Если в вашей книге 10 глав, порядок может быть не тем, на который вы рассчитываете, поскольку
ch10
ch2
$ echo *
ch1.1 ch1.2 ... ch10.1 ch10.2 ... ch2.1 ch2.2 ...
Символ
*
shell
[...]
$ pr ch[12346789]*
$ pr ch[1-46-9]*
$ rm temp[a-z]
Шаблон
?
$ ls ?
$ ls -l ch?.1
$ rm temp?
Отметим, что шаблоны сопоставляются только с именами существующих файлов. В частности, нельзя создать новые имена файлов с помощью шаблонов. Например, если вы захотите расширить
ch
chapter
$ mv ch.* chapter.*
поскольку
chapter.*
Символы шаблонов, подобные
*
/usr/mary/*
/usr/mary/
/usr/*/calendar
calendar
Если вам когда-нибудь придется отказаться от специального назначения символов
*
?
$ ls '?'
Можно также предварить специальный символ обратной дробной чертой:
$ ls \?
(Вспомните, что, поскольку
?
shell
В чем состоит различие между следующими командами:
$ ls junk $ echo junk
$ ls / $ echo /
$ ls $ echo
$ ls * $ echo *
$ ls '*' $ echo '*'
Большинство команд, которые мы рассматривали, производят вывод на терминал, некоторые из них, подобно редактору, осуществляют ввод с терминала. А теперь приведем почти универсальное правило: терминал может быть заменен для ввода, вывода или обеих операций на файл.
Например,
$ ls
выдает список файлов на ваш терминал. Но если задать
$ ls > filelist
то тот же список файлов помещается вместо этого в файл
filelist
>
cat
$ cat f1 f2 f3 > temp
Символ
>>
>
$ cat f1 f2 f3 >> temp
сольет содержимое
f1
f2
f3
temp
>
temp
Аналогично символ
<
let
$ mail mary joe torn bob < let
Во всех этих примерах наличие пробелов по обе стороны символа
>
<
Имея возможность переключать выходной поток с помощью
<
$ who > temp
$ sort < temp
Поскольку команда
who
wc -l