Пересылка, копирование и удаление файлов. Команды
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
— разные имена файлов.
Группа полезных команд
Поскольку у нас уже есть основные средства создания файлов, выдачи списка имен файлов, печати их содержимого, мы можем рассмотреть и другие команды обработки файлов. Чтобы изложение было конкретным, будем использовать файл
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/<i>regular-expression</i>/p
, которая объясняется в приложении 1). С помощью этой команды можно найти слово
"fleas"
в файле
poem
:
$ grep fleas poem
Great fleas have a little fleas
And little fleas have lesser fleas,
And the great fleas themselves, in turn,
have greater fleas to go on;
$
Команда
grep
может также отыскивать строки, которые не соответствуют шаблону, если используется флаг
-v
. (Флаг назван по имени команды редактора
ed
; действие флага можно представить как инвертирование условия соответствия шаблону.)
$ grep -v fleas poem
upon their backs to bite 'em,
and so ad infinitum.
While these again have greater still,
and greater still, and so on.
$
Команду
grep
можно использовать для поиска в нескольких файлах: в таком случае она будет выдавать имя файла перед каждой строкой, подходящей под шаблон, что позволяет найти место, где произошло сопоставление. Существуют также флаги для нумерации строк и т.д. Команда может применяться и для сопоставления с более сложными шаблонами, чем
"fleas"
, но об этом речь пойдет в гл. 4.