Ссылки создают указатели на действительные файлы, не дублируя содержимого файлов. То есть ссылка представляет собой способ дать другое имя тому же файлу Существует два типа ссылок.
• жесткая ссылка;
• символическая ссылка, часто называемая symlink.
При жесткой связи исходное имя файла и имя ссылки указывают на один и тот же физический адрес и абсолютно идентичны. При использовании жесткой ссылки существует два важных ограничения, каталоги не могут иметь жестких ссылок и ссылка не может пересекать файловую систему (Файловая система является физическим пространством, внутри которого должен размещаться файл Простой файл не может распространяться более чем на одну файловую систему, но файловая система может иметь более одного файла.) Можно удалить исходное имя файла, не удаляя связанное имя. В такой ситуации файл не удаляется, но запись в каталоге, соответствующая исходному файлу удаляется и счетчик ссылок уменьшается на 1. Блоки данных файла удаляются тогда, когда счетчик ссылок станет равным нулю
С символическими ссылками — иначе. Есть два файла: один — исходный, а второй — ссылка, содержащая имя исходного файла Важное ограничение символической ссылки заключается в том, что можно уда лить исходный файл. Это приведет к тому, что ссылка на файл будет существовать, но без каких-либо данных. Однако символические ссылки могут указывать на файлы в других файловых системах.
Именование файлов и каталогов
Каждый файл идентифицируется именем, которое представляет собой последовательность символов. Ниже следует список символов, которые можно использовать как часть имен файлов UNIX:
• Символы от А до Z или от а до z
• Цифры от 0 до 9
• Подчеркивание (_)
• Точка (.)
UNIX чувствительна к регистру. Например, файл с именем abc отличается от файла с именем ABC. Некоторые из системных файлов, которые начинаются с точки, например, файл .profile, называются скрытыми. Они не отображаются до тех пор, пока не будет задействован специальный флаг в команде ls.
Организация файловой системы
Как средство организации файлов UNIX предлагает каталоги. Каталог представляет собой специальный файл, в котором содержится список как файлов, так и других каталогов (называемые также подкаталогами). Можно визуально представить структуру файлов UNIX как перевернутое дерево с корнем вверху. Таким образом самый верхний каталог называется корневым и отмечается одиночной наклонной чертой /. Все каталоги и файлы принадлежат корневому каталогу. Вы можете также представить файловую систему UNIX в виде шкафа с делами, где шкаф является корневым каталогом, отдельные ящики являются различными каталогами корневого каталога и папки являются подкаталогами, а дела в отдельных папках являются файлами в структурах каталогов и подкаталогов. Рисунок 1 показывает типичное дерево структуры каталогов.
Работа с каталогами
При работе с UNIX вы всегда будете находиться в каком-то каталоге. Каталог местонахождения зависит от того, с чем именно вы работаете. Каталог, в которым вы находитесь в текущий момент времени, называется текущим каталогом. UNIX использует информацию текущего каталога для определения относительного пути файла.
Наклонная черта (/) в имени файла означает, что вы работаете с файлом в другом каталоге. Если имя файла начинается с .. (двух последовательных точек), то вы осуществляете поиск файла, используя относительный путь файла. Если в имени файла нет .. (двух последовательных точек), то вы пытаетесь найти файл, используя абсолютный путь. Абсолютный путь всегда начинается с наклонной черты (/).
Когда вы входите в систему UNIX, то каталог, куда помещает вас система, называется начальным каталогом. По соглашению, каждый пользователь в системе имеет свой начальный каталог и его имя /home/username.Оболочка использует для идентификации начального каталога пользователя специальный символ тильды (~). Например, если guhasявляется подключаемым пользователем, то следующие утверждения справедливы:
• ~ ссылается на начальный каталог guhas.
• ~ friendссылается на начальный каталог пользователя friend.
Права доступа
Права доступа, связанные с файлом или каталогом, говорят о том, кто именно имеет доступ к файлу или каталогу и что пользователь может делать с файлом.
В UNIX каждому пользователю соответствует уникальный идентификатор регистрации пользователя UID. Кроме того, многие пользователи собраны вместе и ассоциированы в группы. Пользователь может принадлежать к одной или нескольким таким группам. Однако пользователь принадлежит только к одной первичной группе. Все остальные группы, к которым принадлежит пользователь, называются вторичными группами. Идентификатор пользователя определяется в файле /etc/passwd,а группы пользователя определяются в файле /etc/group.Права доступа к файлам и каталогам в UNIX базируются на пользователе и на группе.
Все права доступа, ассоциированные с файлом или каталогом, делятся на три типа:
• Права доступа для владельца: определяют операции, которые может производить над файлом или каталогом их владелец.
• Права доступа для группы: определяют операции, которые может выполнять любой пользователь, принадлежащий к той же самой группе, что и владелец файла или каталога.
• Права доступа для всех остальных: определяют операции, которые может выполнять любой человек (не являющийся владельцем и не принадлежащий к группе владельца),
Используя атрибуты прав доступа файла или каталога, пользователь может избирательно определять права доступа к файлам и каталогам пользователей, принадлежащих к определенной группе, и пользователей, не принадлежащих к ней. UNIX проверяет права доступа в следующем порядке: владелец, группа, все остальные, используется первая категория, применимая к данному пользователю.
Для каждого из этих трех уровней прав доступа есть три ассоциированных бита доступа Ниже идет список битов и описан их смысл для файлов:
-rwxrwxrwx
• Read (r). Файл можно читать.
• Write (w). Файл можно модифицировать, удалять или переименовывать.
• Execute (x) Файл можно выполнять
Далее приведен список битов доступа и их значение для каталогов
drwxr-xr-x
• Read (r). Каталог можно читать.
• Write (w). Каталог можно модифицировать, удалять или переименовывать.
• Execute (x). В каталоге можно выполнять операции над файлами. Данный бит называют также битом поиска (search bit), поскольку он не используется для указания, можно ли каталог выполнять или нет, но указывает, разрешено ли искать файлы в каталоге.
Команды для работы с файлами и каталогами
ls
Команда ls используется для выяснения различных атрибутов одного или нескольких файлов или каталогов. При использовании команды ls у вас должно быть право на чтение в каталоге. Команда is генерирует вывод в стандартный вывод, который можно перенаправить вывод в файл с помощью оператора перенаправления UNIX.
Команде ls можно передать одно или несколько имен файлов или каталогов. Имена файлов и каталогов не обязательны. Если они не заданы, то UNIX обрабатывает текущий каталог.
По умолчанию список файлов внутри каталога отсортирован по именам файлов. Порядок сортировки можно модифицировать, используя несколько флагов, которые описаны ниже.
Следует помнить, что файлы, начинающиеся с точки (.), командой lsне обрабатываются, если не задан флаг -а. Это означает, что по умолчанию записи с . (одинарной точкой) и .. (двумя последовательными точками) не обрабатываются.
Некоторые ключи команды ls:
• -А для вывода всех записей в каталоге, за исключением . (единичная точка) и .. (две последовательные точки).
• -а для вывода всех записей, включая скрытые файлы (файлы, имена которых начинаются с точки).
• -d для вывода информации только об указанном каталоге. По умолчанию выводится также информация о файлах или подкаталогах в данном каталоге.
• -l для отображения следующей информации об указанных файлах и каталогах:
1. Права доступа
2. Количество ссылок
3. Владелец
4. Группа
5. Размер (в байтах)
6. Время последней модификации
7. Имя файла
Пример: ls -l:
-rwxrwxrwx 1 guhas staff 7161 May 8 15:35 example.с
drwxrwxrwx 3 guhas staff 1536 Oct 19 00:54 exe
-rw-r--r-- 2 guhas staff 10 Nov 3 14:28 file1
-rw-r--r-- 2 guhas staff 10 Nov 3 14:28 file112
В примере первый символ перед атрибутами прав доступа (например, dв drwxrwx---) предоставлял информацию о типе файла. Значения типа файла таковы:
• d: Запись является каталогом.
• b: Запись является блок-ориентированным файлом.
• с: Запись является байт-ориентированным файлом.
• l: Запись является символической ссылкой.
• р: Запись является FIFO-ориентированным файлом.
• s: Запись является локальным сокетом.
• -: Запись является регулярным файлом.
Touch
Команда touchиспользуется для нескольких целей, в зависимости от того, существует ли уже файл. Если файл не существует, то команда touchсоздаст его (при условии, что вы имеете право на запись в каталог). Если файл уже есть, то команда touchмодифицирует время последнего изменения файла.
Chmod
У вас может возникнуть необходимость модифицировать права доступа к каталогу или к файлам как для того, чтобы обезопасить их, так и для того, чтобы сделать их доступными. Для модификации прав доступа к файлу или каталогу можно использовать команду chmod.Права доступа в UNIX указываются в восьмеричной форме (числами от 0 до 7). Права доступа для файла или каталога можно указать следующим образом:
chmod 660 testfile
При этом читать и записывать в файл сможете только вы и члены вашей группы. (-rw-rw----)
Chgrp
Если вы хотите изменить группу, которой принадлежит файл, то используйте команду chgrp.Группа должна быть одной из групп, к которой принадлежит владелец. То есть, группа должна быть либо первичной группой, либо одной из вторичных групп владельца.
Пример: chgrp devt testfile
Теперь группой, владеющей файлом testfile является devt.
Chown
Если хотите поменять владельца файла или каталога, используйте команду chown.
Пример:Если файлом testfileвладеет пользователь testuser,то передача права владения файлом пользователю friendтребует выполнения команды
chown friend teatfile
rm
После того как вы закончили работу с файлом и больше не хотите использовать его, может возникнуть необходимость удалить файл, чтобы освободить пространство на диске, занятое этим файлом. Команда rm предоставляет возможность удалить файл с диска Если запись в каталоге является последней ссылкой на файл, то файл удаляется. Для удаления файла из каталога не нужны права на чтение или запись для файла, но нужны права на запись в каталог, содержащий файл. Команда rmобычно используется для удаления файлов, но она обеспечивает также специальный флаг -r для удаления файлов в каталоге рекурсивно, включая каталог и его подкаталоги
Ниже следует список нескольких флагов, которые можно использовать с командой rm:
• -i для интерактивного удаления файлов
• -fдля удаления файлов без какого-либо сообщения. Не будет генерироваться никаких сообщений как в том случае, когда файл не существует, так и в том случае, когда у вас нет разрешения на удаление одного или нескольких файлов.
• -r для удаления файлов в каталоге и самих каталогов рекурсивно
Пример: Если вы хотите удалить из текущего каталога все файлы, имя которых начинается с test, выполните следующую команду
rm test*
!!!ВниманиеИспользуя с командой rmсимволы шаблонов, будьте внимательны. Прежде чем удалить файл, убедитесь, что все правильно, так как удаленный файл нельзя восстановить!
mv
Команда mvпредоставляет возможность переименования файлов. Кроме того, она позволяет перемешать файлы из одного каталога в другой, сохраняя исходное имя, что эквивалентно копированию файлов из исходного каталога в каталог места назначения и последующего удаления исходного файла Команда mvчасто применяется при реорганизации файлов. При перемещении файлов или каталогов результирующий файл или каталог получает права доступа исходного файла или каталога, независимо от того, существовал ли раньше этот файл или каталог.
Ниже следует список флагов, которые можно использовать с командой mv
• -i для интерактивного перемещения или переименования файлов.
• -f для перемещения или переименования файлов без всяких сообщений Применение данного флага подавит сообщения в тех случаях когда вы пытаетесь переименовать несуществующий файл или у вас нет права на переименование файла.
Команда mvпринимает два аргумента Первый аргумент - это имя исходного файла или каталога. Второй аргумент - это результирующий файл или каталог. Однако поведение команды mvзависит от того, существует ли результирующий каталог или файл.
ср
Команда сриспользуется для создания копии содержимого одного или более исходных файлов в виде указанных результирующих файлов. Если результирующий файл уже существует, то он переписывается содержимым исходного файла. Поведение команды срварьируется в зависимости от того, являются ли оригинал и копия каталогами или файлами.
Ниже следует перечень флагов, использующихся в команде ср:
• -р для сохранения даты и времени модификации, а также кода прав доступа исходного файла.
• -i для выполнения команды ср в интерактивном режиме так, чтобы она спрашивала подтверждения, если результирующий файл уже существует.
• -h для следования символическим ссылкам.
• -rдля копирования файлов из указанных каталогов и их подкаталогов. Специальные файлы, такие как связанные, обрабатываются точно так же, как и регулярные.
Для конкатенации множества файлов в один существует команда cat. По умолчанию команда catгенерирует вывод в стандартный вывод и принимает ввод из стандартного ввода. Команда catпринимает в качестве аргументов одно или несколько имен файлов. Файлы конкатенируются в том порядке, в каком они указаны в списке аргументов.
Примеры:
В самой простой форме вы можете просто напечатать команду cat,что переведет вас в режим ввода. В режиме ввода можно ввести много строк, а затем Ctrl-D для сигнализации о конце ввода. Команда cat отобразит введенные строки.
Если вы хотите конкатенировать данные файлы в файл под названием testfile,используйте оператор перенаправления > следующим образом:
cat testfilel testfile2 testfile3 > testfile
С помощью cat возможно просто отобразить содержимое файла:
cat testfile
Echo
Команда echo служит для отображения данных на терминале. Однако, используя перенаправления ввода, можно отображать данные в файл.
Пример: Для вывода сообщения Hello world:
echo ‘Hello world’
Для записи этого сообщения в файл hello:
echo ‘Hello world’ > hello
ln
Иногда возникает необходимость обеспечить одному и тому же файлу альтернативные имена. Они могут создаваться путем связывания имен файлов командой ln.Можно связать файл с другим именем в том же самом каталоге или с тем же именем в другом каталоге.
При связывании имени файла с другим именем файла вы можете указать только два аргумента; имя исходного файла и имя результирующего файла. При связывании имени файла с каталогом можно указать множество имен файлов, привязываемых к одному и тому же каталогу.
Если вы осуществляете связывание с использованием жестких ссылок, то связи не могут пересекать файловые системы.
Флаги, которые можно использовать с командой ln,таковы:
• -s служит для создания мягкой (символической) ссылки на другой файл или каталог. В мягкой ссылке файл-ссылка содержит строку имени исходного файла. Когда выполняется операция над файлом-ссылкой, то имя исходного файла в ссылке используется для указания на исходный файл.
• -f гарантирует, что результирующее имя файла будет заменено именем ссылки, если файл уже существует.
По умолчанию команда lnсоздает жесткую ссылку.
Пример:
Если необходимо связать testfile1ctestfile2 в текущем каталоге, выполните следующую команду:
ln testfilel testfile2
Для создания символической ссылки testfile2в текущем каталоге выполните следующую команду:
ln -stestfilel testfile2
cd
Команда cdпозволяет сменить текущий каталог.
Пример:
Перейти в каталог /usr
cd /usr
Перейти на уровень выше
cd ..
Mkdir
Для создания каталога используется команда mkdir.Команда mkdirпринимает несколько имен каталогов и создает их одновременно. Как и в случае с файлами, для создания каталогов используется как абсолютный, так и относительный маршруты. Для создания каталога у вас должно быть право на запись в его родительский каталог.
Ниже приводится перечень флагов, которые можно использовать с командой mkdir:
• -р для создания всех каталогов, заданных в полном имени указанного каталога, если они еще не существуют.
• -m позволяет задать права доступа создаваемому каталогу
Rmdir
После того как работа с каталогами завершена или в случае нехватки пространства на диске, появляется необходимость удаления каталогов. Для этого используется команда rmdir.Вы можете удалить каталог только в том случае, если он пуст, то есть все файлы и подкаталоги из него удалены. В качестве аргументов команды rmdirдопустимо указывать множество имен каталогов. Для удаления каталога необходимо иметь право на запись в родительский каталог.
Далее описан флаг, который работает с командой rmdir:
• -р для удаления всех каталогов в указанном пути.