С короткими файлами никаких проблем нет, но в случае длинных файлов, если ваш терминал соединен с машиной высокоскоростной линией, вы должны быть достаточно проворны, чтобы с помощью ctl-s остановить вывод прежде, чем он исчезнет с экрана. Стандартной команды для выдачи файла на видеотерминал порциями размеров в экран не существует, хотя в каждой системе UNIX такая команда имеется. В вашей системе это может быть команда
pg
или
more
. Здесь она называется
pr
в гл. VI будет показана ее реализация.
Подобно команде
cat
,
pr
выдает содержимое всех файлов, перечисленных в списке, но в виде, подходящем для устройства печати: каждая страница длиной в 11 дюймов содержит 66 строк,
включая заголовок, где указываются номер страницы, имя файла, дата и время его последнего изменения. В месте сгиба бумаги строки пропускаются. Итак, для того чтобы красиво напечатать файл
junk
, затем перейти на следующую страницу и так же красиво напечатать файл
temp
, задайте:
$ pr junk temp
Sep 26 16:25 1983 junk Page 1
To be or not to be
(еще 60 пустых строк)
Sep 26 16:26 1983 temp Page 1
That is a question.
(еще 60 пустых строк)
$
Команда
pr
может также инициировать печать в несколько столбцов. Так,
$ pr -3 filenames
печатает каждый файл в три столбца. Можно заменить число 3 любым разумным числом, и команда
pr
"постарается" исполнить задание. (Под
filename
подразумевается список имен файлов.) Команда
pr -m
напечатает набор файлов параллельными столбцами, см.
pr(1)
.
Следует отметить, что
pr
— это не программа форматирования текста: она не разбивает текст на строки и не выравнивает поля. Настоящими программами форматирования являются
troff
и
nroff
, которые обсуждаются в гл. 9.
Существуют также команды, которые производят вывод на высокоскоростное печатающее устройство. Поищите в вашем руководстве команду с именем
lp
или
lpr
или посмотрите в предметном указателе (индексе) слово "printer". Выбирайте команду в зависимости от того, какое печатающее устройство подключено к вашей машине. Часто команды
pr
и
lpr
используются совместно. После того как
pr
отформатирует информацию должным образом,
lpr
будет управлять процессом передачи па печатающее устройство. Мы вернемся к этому вопросу позднее.
Пересылка, копирование и удаление файлов. Команды
mv
,
cp
,
rm
Рассмотрим другие команды. Вначале попробуем изменить имя файла. Переименование файла производится "пересылкой" (moving) его от одного имени к другому следующим образом:
$ mv junk special
Это означает, что файл с именем
junk
будет называться теперь
special
, содержимое его не меняется. Если теперь выполнить команду
ls
, то вы увидите другой список, в котором нет файла
junk
, но есть файл
special
:
$ ls
special
temp
$ cat junk
cat: can't open junk
$
Будьте осторожны: если вы перешлете файл на место уже существующего файла, то последний будет замещен.
Чтобы иметь копию файла (т.е. две его версии), воспользуйтесь командой
cp
:
$ cp special special.save
которая продублирует файл
special
в
special.save
. Наконец, когда вы устанете создавать и пересылать файлы, команда rm уберет все указанные файлы:
$ rm temp junk
rm: junk nonexistent
$
$ cp special special.save
Вы
получите предупреждение, если один из удаляемых файлов не существует, но в противном случае
rm
, как и большинство команд UNIX, отработает без лишних слов. Системе не свойственна "болтовня". Приглашения, сообщения об ошибках кратки и не всегда помогают. Краткость может огорчать новичков, но опытных пользователей раздражают "разговорчивые" команды.
Чем может быть имя файла?
До сих пор мы употребляли имена файлов, даже не упоминая о том, что является законным именем файла. Теперь пора ввести несколько правил. Во-первых, имя файла ограничено 14 символами. [2] Во-вторых, хотя и можно использовать практически любой символ в имени файла, здравый смысл подсказывает, что следует употреблять только видимые символы и избегать применения символов, несущих определенную смысловую нагрузку. Например, как вы уже видели, в команде
ls
флаг
– t
означает список, упорядоченный по времени, так что если у вас есть файл с именем
– t
, вам придется очень постараться, чтобы он попал в список. (Как, действительно, это сделать?) Кроме знака "минус", есть и другие символы, имеющие специальный смысл в первой позиции, однако пока вы не освоите систему, лучше использовать на этом месте только буквы, цифры, точку и символ подчеркивания. (Точка и символ подчеркивания по традиции употребляются для разбития имени файла на части, как в случае
special.save
). Наконец, не забывайте о различии прописных и строчных букв:
junk
,
JUNK
и
Junk
— разные имена файлов.
2
В современных системах такого ограничения нет, длина файла там ограничена в большинстве случаев 255 символами (прим. редактора)
Группа полезных команд
Поскольку у нас уже есть основные средства создания файлов, выдачи списка имен файлов, печати их содержимого, мы можем рассмотреть и другие команды обработки файлов. Чтобы изложение было конкретным, будем использовать файл
poem
, который содержит известное стихотворение Августа Де Моргана. Создадим его с помощью редактора
ed
:
$ ed а
Great fleas have little fleas
upon their backs to bite 'em,
And little fleas have lesser fleas,
and so ad infinitum.
And the great fleas themselves, in turn,
have a greater fleas to go on;
While these again have greater still,
and greater still, and so on.
.
w poem 263
q
$
Начнем с первой команды, которая подсчитывает число строк, слов и символов в одном или нескольких файлах и называется
wc
по одной из ее функций — подсчета слов ("word counting"):
$ wc poem
8 46 263 poem
$
т.е. в файле
poem
восемь строк, 46 слов и 263 символа. Определение "слова" весьма просто — любая последовательность символов, не содержащая пробела, символа табуляции или перевода строки. Команда
wc
произведет подсчет более чем в одном файле (и сообщит итог) и при необходимости "умолчит" о любом счетчике, см.
wc(1)
.
Вторая команда,
grep
, отыскивает в файлах строки, которые подходят под шаблон (ее имя происходит от имени команды редактора
ed g/regular-expression/p
, которая объясняется в приложении 1). С помощью этой команды можно найти слово