Чтение онлайн

на главную - закладки

Жанры

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

1293 5298 28841 ch1.4

33 194 1190 ch1.5

75 323 2030 ch1.6

3801 16210 88930 total

$

Существует программа с именем

echo
("эхо"), которая особенно ценна для экспериментов со "смыслом" сокращенных имен. Как вы смогли догадаться,
echo
лишь повторяет свои аргументы.

$ 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]*
Печать глав 1,2,3,4,6,7,8,9, но не 5

$ pr ch[1-46-9]*
То же самое

$ rm temp[a-z]
Удалить все tempa, …, tempz

Шаблон

?
задает любой одиночный символ:

$ ls ?
Список файлов с именем из одного символа

$ ls -l ch?.1
Список ch1.1 ch2.1 ch3.1 и т.д., но не ch10.1

$ rm temp?
Удалить все файлы temp1, …, tempa и т.д.

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

ch
до
chapter
в каждом имени файла, то такой вариант вам не поможет:

$ mv ch.* chapter.*
Не работает!

поскольку

chapter.*
не соответствует ни одному из существующих имен файлов.

Символы шаблонов, подобные

*
, могут использоваться в абсолютных именах наравне с обычными именами файлов; сопоставление происходит для каждого компонента абсолютного имени, содержащего специальный символ. Так,
/usr/mary/*
инициирует поиск файлов в
/usr/mary/
, a
/usr/*/calendar
порождает список абсолютных имен всех пользователей, работающих с каталогом
calendar
.

Если вам когда-нибудь придется отказаться от специального назначения символов

*
,
?
и др., заключите весь аргумент в апострофы, например:

$ ls '?'

Можно также предварить специальный символ обратной дробной чертой:

$ ls \?

(Вспомните, что, поскольку

?
не является символом стирания или уничтожения, обратная дробная черта перед ним будет обрабатываться не ядром, а интерпретатором
shell
.) Использование кавычек подробно рассматривается в гл. 3.

Упражнение 1.4

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

$ 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
не существует, то он будет создан первоначально пустым.

Поделиться:
Популярные книги

#Бояръ-Аниме. Газлайтер. Том 37

Володин Григорий Григорьевич
37. История Телепата
Фантастика:
фэнтези
аниме
боевая фантастика
6.25
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 37

Охота на маску

Метельский Николай Александрович
11. Унесенный ветром
Фантастика:
боевая фантастика
7.75
рейтинг книги
Охота на маску

Газлайтер. Том 17

Володин Григорий Григорьевич
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 17

Язык программирования C#9 и платформа .NET5

Троелсен Эндрю
Компьютеры и Интернет:
базы данных
5.00
рейтинг книги
Язык программирования C#9 и платформа .NET5

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Французская новелла XX века. 1900–1939

Пруст Марсель
Проза:
классическая проза
6.25
рейтинг книги
Французская новелла XX века. 1900–1939

Солнечный флот

Вайс Александр
4. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Солнечный флот

Кодекс Охотника. Книга II

Винокуров Юрий
2. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга II

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Газлайтер. Том 21

Володин Григорий Григорьевич
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.25
рейтинг книги
Газлайтер. Том 21

Бастард Императора. Том 10

Орлов Андрей Юрьевич
10. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
6.25
рейтинг книги
Бастард Императора. Том 10

Первый среди равных. Книга V

Бор Жорж
5. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга V

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Рискованная игра

Чергинец Николай Иванович
Детективы:
прочие детективы
5.00
рейтинг книги
Рискованная игра