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
сами служат связями, ссылающимися на один файл, который анализирует имя команды, чтобы узнать, какое задание выполнить.Упражнение 2.6Почему команда
ls -l
выдает четыре связи у каталога recipes
?Подсказка: попробуйте ввести
$ ls -ld /usr/you
Чем эта информация полезна?
Упражнение 2.7В чем состоит разница между
$ mv junk junk1
и
$ cp junk junk1
$ rm junk
Подсказка: установите связь с
junk
и затем используйте ее.Упражнение 2.8Команда
cp
не производит копирования во вложенных каталогах, а ограничивается файлами первого уровня вложенности. Каковы будут ее действия, если один из аргументов окажется каталогом? Насколько это хорошо и осмысленно? Обсудите возможные преимущества трех вариантов: включить еще один флаг в cp
, чтобы работать с вложенными каталогами, ввести отдельную команду rcp
(рекурсивную cp
) для данного случая или просто предъявить к cp
требование копировать все файлы из каталога, если он встретится среди аргументов (см. гл. 7). Что получат другие программы, если они смогут перемещаться по дереву каталогов?2.6 Иерархия каталогов
В первой главе рассмотрение иерархии файловой системы, начиная с каталога
/usr/you
, носило несколько неформальный характер. Теперь мы хотим изучить ее последовательно, начиная от корня дерева.Корневой каталог называется
/
:$ ls /
bin
boot
dev
etc
lib
tmp
unix
usr
$
Программа
/unix
— это программа ядра UNIX: когда система начинает работу, /unix
считывается с диска в память и начинает выполняться. Все происходит за два шага: вначале считывается файл /boot
, а затем он считывает /unix
. Более подробно о таком процессе раскрутки можно узнать в справочном руководстве по boot(8)
. Остальные файлы каталога /
, по крайней мере в нашей версии, являются каталогами, каждый из которых представляет законченный раздел файловой системы. После дальнейшего краткого обзора иерархии читателю будет предоставлена возможность поэкспериментировать с упоминаемыми здесь каталогами. Чем лучше вы разберетесь в устройстве файловой системы, тем более эффективно сможете ею пользоваться. В табл. 2.1 указаны подходящие места для поиска, хотя некоторые имена каталогов зависят от системы./
Корень файловой системы /bin
Основные программы, готовые к выполнению (двоичные) /dev
Файлы устройств /etc
"Разное" системы /etc/motd
Сегодняшнее сообщение при входе в систему /etc/passwd
Файл паролей /lib
Основные библиотеки и т.п. /tmp
Временные файлы; обновляется при запуске системы /unix
Операционная система в форме, готовой к выполнению /usr
Файловая система пользователей /usr/adm
Системная служба: справочная информация и т.п. /usr/bin
Команды для пользователей: troff
и т.п. /usr/games
Игровые программы /usr/include
Файлы определений Си-программ, например math.h
/usr/include/sys
Системные файлы определений Си-программ, например inode.h
/usr/lib
Библиотеки для Си, Фортрана и т.п. /usr/man
Диалоговое справочное руководство /usr/man/man1
Страницы справочного руководства раздела 1 /usr/mdec
Диагностика ошибок аппаратуры, программы раскрутки и т.п. /usr/news
Служба сообщений пользователей /usr/pub
"Всякая всячина": см. ascii(7)
и eqnchar(7)
/usr/src
Исходные тексты служебных функций и библиотек /usr/src/cmd
Исходные тексты команд из /bin
и /usr/bin
/usr/src/lib
Исходные тексты библиотечных функций /usr/spool
Рабочий каталог для взаимодействующих программ /usr/spool/lpd
Временный каталог для печатающего устройства /usr/spool/mail
Почтовые ящики /usr/spool/uucp
Рабочий каталог программ uucp
/usr/sys
Исходный текст ядра операционной системы /usr/tmp
Альтернативный временный каталог (редко используется) /usr/you
Ваш начальный каталог /usr/you/bin
Ваши собственные программы
Таблица 2.1: Интересные каталоги (см. также hier(7)
)
Каталог
/bin
вам уже известен: в нем находятся основные программы типа who
или ed
.Каталог
/dev
(device — устройства) мы обсудим в следующем разделе.Каталог
/etc
(et cetera — и т.д.) также уже вам встречался ранее. В нем находится различная служебная информация, например файл паролей, и некоторые системные программы, такие, как /etc/getty
, которая инициирует связь с терминалом для команды /bin/login
, /etc/rc
— это файл команд, выполняющихся после раскрутки системы. В файле /etc/group
содержатся сведения о составе всех групп.Каталог
/lib
(library — библиотека) включает основные части компилятора языка Си, такие, как /lib/cpp
— препроцессор Си, /lib/libc.a
— библиотека стандартных функций Си.Каталог
/tmp