Символ *
$ 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/
, a /usr/*/calendar
порождает список абсолютных имен всех пользователей, работающих с каталогом calendar
.Если вам когда-нибудь придется отказаться от специального назначения символов *
?
и др., заключите весь аргумент в апострофы, например:$ ls '?'
Можно также предварить специальный символ обратной дробной чертой:
$ ls \?
(Вспомните, что, поскольку ?
shell
.) Использование кавычек подробно рассматривается в гл. 3.В чем состоит различие между следующими командами:
$ 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
производит подсчет строк (подавляя вывод числа слов и символов), можно подсчитать число пользователей с помощью команд:$ who temp
$ wc -l temp
и число файлов в текущем каталоге:
$ ls temp
$ wc -l temp
хотя в это число войдет и сам файл temp