15768 -rw-rw-rw- 1 you 29 Sep 27 13:16 junk
15274 drwxrwxrwx 4 you 64 Sep 27 09:34 recipes
$
Изменение копии файла или ее удаление не оказывает действия на оригинал. Обратите внимание на то, что, поскольку у файла copyofjunk
отменено право на запись, команда rm запрашивает подтверждение, прежде чем удалить файл.
Есть еще одна команда общего назначения, управляющая файлами, — mv
, которая переносит или переименовывает файлы, просто преобразуя связи. Синтаксис ее такой же, как у команд cp
и ln
:
$ mv junk sameoldjunk $ ls -li total 2
15274 drwxrwxrwx 4 you 64 Sep 27 09:34 recipes
15768 -rw-rw-rw- 1 you 29 Sep 27 13:16 sameoldjunk
$
sameoldjunk
— это тот же самый файл, что и наш старый файл junk
, вплоть до индекса файла, который связан с записью каталога с номером 15768; изменилось только его имя.
Все описанные выше манипуляции с файлами происходили в одном каталоге, однако команды применяются и в других каталогах. Команда ln
часто используется для того, чтобы установить связь с одним именем в разных каталогах; это бывает в тех случаях, когда несколько пользователей работают с одной программой или над одним документом. Команда mv может переслать файл или каталог из одного каталога в другой. На самом деле, это довольно стандартный прием, так что у команд mv
и cp
есть специальный синтаксис для такой ситуации:
$ mv
(или cp
) file1 file2 ... directory
Здесь показана пересылка (или копирование) одного или нескольких файлов в каталог, который является последним аргументом. Связи или копии файлов получаются под теми же именами. Например, если вы хотите "набить руку" в работе с редактором, то можете начать с
$ cp /usr/src/cmd/ed.с .
получив свою копию исходного текста редактора для экспериментов. Осваивая интерпретатор shell
, исходные тексты которого находятся в нескольких каталогах, задайте
$ mkdir sh
$ cp /usr/src/cmd/sh/* sh
и команда cp
скопирует все исходные тексты shell
в ваш вложенный каталог sh
(мы считаем, что в /usr/src/cmd/sh
нет вложенных каталогов, так как команда cp
не слишком "умна"). В некоторых случаях команду ln
допустимо применять с несколькими именами файлов в качестве аргументов, но имя каталога по-прежнему является последним аргументом. В ряде систем команды mv
, cp
и ln
сами служат связями, ссылающимися на один файл, который анализирует имя команды, чтобы узнать, какое задание выполнить.
Почему команда ls -l
выдает четыре связи у каталога recipes
?
$ ls -ld /usr/you
Чем эта информация полезна?
В чем состоит разница между
$ mv junk junk1
и
$ cp junk junk1
$ rm junk
junk
и затем используйте ее.
Команда cp
не производит копирования во вложенных каталогах, а ограничивается файлами первого уровня вложенности. Каковы будут ее действия, если один из аргументов окажется каталогом? Насколько это хорошо и осмысленно? Обсудите возможные преимущества трех вариантов: включить еще один флаг в cp
, чтобы работать с вложенными каталогами, ввести отдельную команду rcp
(рекурсивную cp
) для данного случая или просто предъявить к cp
требование копировать все файлы из каталога, если он встретится среди аргументов (см. гл. 7). Что получат другие программы, если они смогут перемещаться по дереву каталогов?
2.6 Иерархия каталогов
В первой главе рассмотрение иерархии файловой системы, начиная с каталога /usr/you
, носило несколько неформальный характер. Теперь мы хотим изучить ее последовательно, начиная от корня дерева.
Корневой каталог называется /
:
$ ls /
bin
boot
dev
etc
lib
tmp
unix
usr
$
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии