Автор: Пользователь скрыл имя, 21 Февраля 2013 в 20:34, доклад
Файловая система – это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными.
Под файлами понимается логически связанная совокупность данных, ассоциированная с носителем информации и внешним устройством. Файл является абстрактным понятием, и его свойства не зависят от носителя информации.
mkdir /home/anna/examples
Создание файлов
Создание файла осуществляется
с помощью команды touch. Вообще говоря, данная команда используется
для изменения временных меток доступа
(вызывается с ключом -a, --time=access или --time=atime) и модификации (вызывается с ключом -m,
--time=modify или --time=mtime) указанных
файлов. Однако, попытка выполнения данной
команды над несуществующим файлом приведет
к его созданию.
Параметром команды touch является имя файла (или список имен файлов через пробел). Например, следующая команда приведет к созданию трех файлов – f1.txt, f2.lst и f3:
touch f1.txt f2.lst f3
Ключ -с (или --no-create) предотвращает создание файла в случае, если он не существует.
Копирование файлов и каталогов
Для копирования файлов и каталогов применяется команда cp (от англ. copy – копировать). Команда cp требует присутствия двух обязательных параметров: первый – копируемый файл или каталог (или их список), второй – файл или каталог назначения. Как обычно, в именах файлов и каталогов можно использовать полные и относительные пути и шаблоны.
Синтаксис команды ср:
ср [ключи] имя_исходного_файла/каталога имя_целевого_файла/каталога
Если последний аргумент является именем существующего каталога, то команда ср копирует каждый указанный исходный файл в файл с тем же именем в целевой каталог.
Если аргументами команды ср являются имена двух файлов (каталогов), то команда ср копирует исходный файл (каталог) в файл (каталог), имя которого задано целевым файлом (каталогом).
Если последний аргумент не является каталогом и при этом задано несколько имен файлов, то команда ср завершается с ошибкой.
По умолчанию команда cp, как и многие другие команды, будет работать с файлами в текущем каталоге.
Нужно иметь в виду, что в Unix команда cp нередко настроена таким образом, что при попытке скопировать файл поверх уже существующего файла никакого предупреждения не выводится. В этом случае файл будет просто перезаписан, а данные, которые содержались в старой версии файла, безвозвратно потеряны. Поэтому при использовании cp следует всегда быть внимательным и проверять имена файлов, которые нужно скопировать.
Некоторые флаги команды ср:
-i, --interactive |
требует подтверждения при перезаписи существующих целевых файлов |
-R, --recursive |
копирует каталоги рекурсивно |
-v, --verbose |
печатает имя каждого файла перед его копированием |
-u, --update |
копирует только при условии, что исходный (копируемый) файл новее, чем целевой файл, или целевой файл вообще отсутствует |
Примеры:
cp /etc/rc.d/init.d/httpd |
копирование файла /etc/rc.d/init.d/httpd в текущий каталог |
cp -R prog dir |
рекурсивное копирование каталога prog в каталог dir |
cp ~/labs/lab1 ~/copy |
копирование файла ~/labs/lab1 в каталог ~/copy |
cp ~/labs/lab1 ~/copy/l1 |
копирование файла ~/labs/lab1 в каталог ~/copy с новым именем l1 |
Перемещение/переименование файлов и каталогов
Для перемещения файлов и каталогов применяется команда mv (от англ. move – двигать, перемещать). Перемещение файла внутри одной файловой системы в действительности равнозначно его переименованию: данные самого файла при этом остаются на тех же секторах диска, а изменяются каталоги, в которых произошло перемещение. Перемещение предполагает удаление ссылки на файл из того каталога, откуда он перемещен, и добавление ссылки на этот самый файл в тот каталог, куда он перемещен. В результате изменяется полное имя файла – полный путь, т. е. положение файла в файловой системе.
У команды mv два обязательных аргумента: первый – перемещаемый файл или каталог (или их список), второй – файл или каталог назначения. Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути.
Синтаксис команды mv:
mv [ключи] имя_исходного_файла/каталога имя_целевого_файла/каталога
Если последний аргумент является именем существующего каталога, то команда mv переносит каждый указанный исходный файл в файл с тем же именем в целевой каталог.
Если аргументами команды mv являются два файла, то команда переименовывает исходный файл в файл, имя которого задано целевым файлом.
Если последний аргумент не является каталогом и при этом задано несколько имен файлов, то команда mv завершается с ошибкой.
По умолчанию команда mv будет работать с файлами в текущем каталоге.
Некоторые флаги команды mv:
-i, --interactive |
требует подтверждения при перезаписи существующих целевых файлов |
-v, --verbose |
печатает имя каждого файла перед его перемещением |
-u, --update |
не перемещает исходный файл, если
целевой файл имеет такое же
или более позднее время |
Примеры:
mv /home/peter/arch/1.ar archives |
перемещение файла /home/peter/arch/1.ar в каталог archives |
mv lab1 lab2 lab3 ~/old_files |
перемещение файлов lab1, lab2, lab3 из текущего каталога в каталог ~/old_files |
mv file FILE |
переименование файла file в FILE |
mv ~/labs/lab1 ~/copy/l1 |
перемещение файла ~/labs/lab1 в каталог ~/copy с новым именем l1 |
Создание ссылок
Жесткие ссылки (hard links)
Каждый файл представляет собой область данных на жестком диске компьютера или на другом носителе информации, которую можно найти по имени. В файловой системе Unix содержимое файла связывается с его именем при помощи жестких ссылок. Создание файла с помощью любой программы означает, что будет создана жесткая ссылка – имя файла, и открыта новая область данных на диске. Причем количество ссылок на одну и ту же область данных (файл) не ограничено, т. е. у файла может быть несколько имен.
Пользователь Unix может добавить файлу еще одно имя (создать еще одну жесткую ссылку на файл) при помощи команды ln (от англ. link - соединять, связывать). Первый параметр этой команды – это имя файла, на который нужно создать ссылку, второй – имя новой ссылки. По умолчанию ссылка будет создана в текущем каталоге.
Пример создания жесткой ссылки с именем hard_link в текущем каталоге на файл /home/peter/docs/1.doc:
ln /home/peter/docs/1.doc hard_link
При создании жестких ссылок у файлов и ссылок на них совпадают размер и время создания. Также, и файлу, и ссылке на него соответствует один индексный дескриптор. Все операции с файловой системой – создание, удаление и перемещение файлов – производятся на самом деле над индексными дескрипторами, а имена нужны только для того, чтобы пользователь мог легко ориентироваться в файловой системе. Более того, имя (или имена) файла в его индексном дескрипторе не указаны. При этом жесткая ссылка представляет собой запись вида имя файла + номер индексного дескриптора в каталоге. По сути, жесткая ссылка задает еще одно имя для файла.
Доступ к одному и тому же файлу при помощи нескольких имен может понадобиться в следующих случаях:
Символические (мягкие) ссылки
У жестких ссылок есть два существенных ограничения:
Чтобы избежать этих ограничений, были разработаны символические (их еще называют символьными) ссылки. Символьная ссылка (symbolic link) – это просто файл особого типа, в котором содержится имя другого файла. Символьные ссылки, как и жесткие, предоставляют возможность обращаться к одному и тому же файлу по разным именам. Кроме того, символьные ссылки могут указывать и на каталог, чего не позволяют жесткие ссылки. Символьные ссылки называются так потому, что содержат символы – путь к файлу или каталогу. Если на пути к файлу встречается символьная ссылка, система выполняет подстановку: исходный путь заменяется тем, что содержится в ссылке.
Символьную ссылку можно создать при помощи команды ln с ключом –s.
Пример создания символьной ссылки с именем olga_file в домашнем каталоге пользователя andrew на файл mylist.lst, который находится в каталоге lists в в домашнем каталоге пользователяolga:
ln –s /home/olga/lists/mylist.lst /home/andrew/olga_file
Номер индексного дескриптора, размер и время создания файла и символической ссылки на него различаются. Это свидетельствует о том, что сам файл и символическая ссылка – это разные файлы.
Символьная ссылка вполне может содержать имя несуществующего файла. В этом случае ссылка будет существовать, но не будет работать.
Удаление файлов и каталогов
Для удаления файлов предназначена команда rm (от англ. remove - удалять). Она предназначена для удаления жестких ссылок, а не самих файлов. В Unix, чтобы полностью удалить файл, требуется последовательно удалить все жесткие ссылки на него. При этом все жесткие ссылки на файл (его имена) равноправны – среди них нет «главной», с исчезновением которой исчезнет файл. Пока есть хоть одна ссылка, файл продолжает существовать. Впрочем, у большинства файлов в Unix есть только одно имя (одна жесткая ссылка на файл), поэтому команда rm имя_файла/список_имен_файлов в большинстве случаев успешно удаляет файл. Например, команда
rm test
приведет к удалению файла test. А команда
rm *.txt
приведет к удалению всех файлов с расширениями txt.
Некоторые флаги команды rm:
-i, --interactive |
требует подтверждения при удалении файлов |
-v, --verbose |
печатает имя каждого файла перед его удалением |
Для удаления каталогов предназначена другая команда – rmdir (от англ. remove directory – удалить каталог). Впрочем, rmdir согласится удалить каталог только в том случае, если он пуст: в нем нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm с ключом -r (--recursive). Команда
rm -r имя_каталога
является очень удобным
Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению!
Некоторые флаги команды rmdir:
-р, --parents |
после удаления указанного каталога пытается удалять каждый каталоговый компонент из полного маршрута |
-v, --verbose |
печатает имя каждого файла перед его удалением |
Примеры:
rmdir dir32 |
удаление пустого каталога с именем dir32 |
rmdir catalog tests temp |
удаление пустых каталогов с именами catalog, tests и temp |
rm -r /home/anna/tmp |
удаление каталога /home/anna/tmp со всем его содержимым |
Просмотр содержимого файлов
Вывод содержимого файла
1. Команда more имя_файла/список_имен_файлов выводит на экран содержимое одного или нескольких указанных файлов, при этом нет необходимости запускать текстовый редактор, распечатывать файл или нажимать клавишу паузы во время выхода текста на экран. Например, для вывода на экран содержимого файла /etc/passwd используется команда
more /etc/passwd
Недостаток этой команды в том, что невозможно пролистать информацию в обратном направлении, а только вперед (с помощью клавиш [пробел ]или [Enter]).