Полное (или абсолютное ) имя файла однозначно идентифицирует конкретный файл в системе. Краткое имя однозначно идентифицирует файл лишь в отдельном каталоге. В вышеприведенном примере каталоги «/bin/tmp/» и «/home/alice/tmp/» имеют совпадающие краткие имена, но различные пути к ним (путем называется часть полного имени, исключающая краткое имя); соответственно, различаются и их полные имена.

Полное (абсолютное) имя в документации и литературе всегда указывается с ведущим слэшем (т.е. начинается с «/»); таким же образом его следует указывать и в качестве аргумента команд ОС.

Ранее, когда Алиса знакомилась с командами «ls», «touch», «rm», она указывала имя файла «1й_файл» без ведущего слэша (и без указания каталога вообще). Такое именование называется относительным . При относительном указании имени файла путь к нему указывается относительно текущего каталога . Текущий (рабочий) каталог оболочки определен в каждый момент времени (при вводе каждой команды).

При регистрации пользователя текущим становится домашний каталог пользователя, определенный администратором при создании учетной записи этого пользователя. Обычно домашние каталоги пользователей создаются в каталоге «/home/» с именами, совпадающими с регистрационными именами пользователей. Для пользовательницы Алисы, таким образом, домашним будет каталог «/home/alice/» (см. соответствующую вершину дерева файловой структуры, изображенной на рис. выше). Узнать свой домашний каталог пользователь может в любой момент, подав команду «echo ~» (описание команды «echo» см. в Справочных материалах).

В простейшем случае относительное имя файла совпадает с его кратким именем. В примерах с командами «ls», «touch», «rm» выше все имена указывали на файлы в текущем каталоге, которым был домашний каталог Алисы (полное имя этого каталога «/home/alice/»), поэтому выводилась информация о файлах, создавался файл и удалялся файл в этом каталоге.

Отдельный пользователь, в зависимости от цели, с которой он пользуется системой, может работать с десятками, сотнями, тысячами и более файлов. Держать их все в рабочем каталоге неудобно, поскольку пришлось бы придумывать и применять весьма сложные системы их именования. Разумнее рассредоточить их по каталогам, вложенным в свой рабочий каталог.

Создать каталог можно, командой «mkdir», а удалить пустой (не содержащий файлов) каталог – командой «rmdir» («mkdir» – это сокращение от англ. словосочетания «make directory» («создать каталог»), а «rmdir» – от «remove directory» («удалить каталог»)) с именем каталога в качестве параметра (Рис. 1-15).

Свободные программы и системы в школе _1_15.png
Рис. 1-15

Сделать каталог текущим можно, командой «cd» (сокращение от англ. словосочетания «change directory» («сменить каталог»)) с именем каталога в качестве параметра (Рис. 1-16).

Свободные программы и системы в школе _1_16.png
Рис. 1-16

Обратите внимание, что, после того, как Алиса сменила текущий каталог, его краткое имя появилось в ее подсказке. В вашей системе это может быть и не так, но узнать полное имя текущего каталога можно в любой момент, подав команду «pwd» без параметров.

Вместо «текущий каталог в настоящий момент соответствует такому-то» часто говорят «оболочка (или даже пользователь) находится в таком-то каталоге», а вместо «сменить текущий каталог на такой-то» – «перейти в такой-то каталог».

Подавая команду перехода в каталог, Алиса использовала его относительное имя, совпадающее в данным случае с его кратким именем. Но она могла указать и его полное имя.

Вернуться обратно (т.е. сменить текущий каталог снова на «/home/alice/») она может, указав его полное имя. На самом деле, есть способ проще. «Подняться» на одну ступень по иерархии каталогов можно, использовав специальное имя каталога «..», содержащееся в любом каталоге. Выше Алиса не видела его в списках файлов, выводившихся по команде «ls», поскольку это имя начинается с точки и, соответственно, файл является «скрытым». Увидеть имена скрытых (наряду с прочими) файлов можно командой «ls -a» (Рис. 1-17).

Свободные программы и системы в школе _1_17.png
Рис. 1-17

В данном случае «пустой» каталог содержит два файла-каталога «.» и «..», первый из которых является самим каталогом, в котором он содержится, а второй – каталогом на ступень выше в иерархии. Обратите внимание, что два ключа (например, «-a» и «-l») можно указать и в сокращенной форме – дефис и следующие за ним буквы ключей без пробела (в данном случае, «-al»).

И, наконец, перейти в домашний каталог из любой вершины в файловой структуре можно командой «cd» без параметров.

Копирование, перемещение, переименование файлов

Командой «cp» можно скопировать файлы, командой «mv» – переименовать (переместить) их. Обе эти команды имеют два отличающихся по семантике варианта.

1) Если последним операндом является имя существующего каталога, то файлы, имена которых указаны в качестве предшествующих операндов, копируются или перемещаются в этот каталог.

2) Если последним операндом является имя обычного файла, то файл, имя которого указано в качестве предшествовавшего операнда, копируется или переименовывается в этот файл.

Указание в этих командах единственного операнда, а также указание более двух операндов в случае, если последний из них не является именем существующего каталога – ошибка.

Свободные программы и системы в школе _1_18.png
Рис. 1-18

Приведенный на Рис. 1-18 пример демонстрирует действие команд «cp» и «mv».

Чтобы избежать случайного удаления файлов в случае, если при копировании или перемещении файлов имена копируемых или переименовываемых файлов совпадают с именами существующих, можно использовать ключ «-i» (Рис. 1-19).

Свободные программы и системы в школе _1_19.png
Рис. 1-19

Генерация имен файлов

В качестве операндов чаще всего выступают имена файлов, и во многих случаях операцию желательно выполнить не над одним, а над целым списком файлов. Стандартная оболочка реализует особый механизм для указания списков имен файлов, если эти имена формально-синтаксически схожи (начинаются с одной буквы, заканчиваются одним расширением и т.п.). Этот механизм называется «глоббингом», генерацией имен файлов или раскрытием метасимволов в именах . Он заимствован и многими альтернативными системами, но в отличие от большинства из них, в открытых системах раскрытие метасимвола осуществляется оболочкой, а не командой.


Перейти на страницу:
Изменить размер шрифта: