Работа с файлами и каталогами

Автор: Пользователь скрыл имя, 21 Февраля 2013 в 20:34, доклад

Описание работы

Файловая система – это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными.
Под файлами понимается логически связанная совокупность данных, ассоциированная с носителем информации и внешним устройством. Файл является абстрактным понятием, и его свойства не зависят от носителя информации.

Работа содержит 1 файл

Работа с файлами и каталогами.docx

— 76.22 Кб (Скачать)

 

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

 

При создании жестких ссылок у файлов и ссылок на них совпадают  размер и время создания. Также, и  файлу, и ссылке на него соответствует  один индексный дескриптор. Все операции с файловой системой – создание, удаление и перемещение файлов –  производятся на самом деле над индексными дескрипторами, а имена нужны  только для того, чтобы пользователь мог легко ориентироваться в  файловой системе. Более того, имя (или  имена) файла в его индексном  дескрипторе не указаны. При этом жесткая ссылка представляет собой  запись вида имя файла + номер индексного дескриптора в каталоге. По сути, жесткая ссылка задает еще одно имя для файла.

Доступ к одному и тому же файлу при помощи нескольких имен может понадобиться в следующих  случаях:

  1. Одна и та же программа известна под несколькими именами.
  2. Доступ пользователей к некоторым каталогам в системе может быть ограничен из соображений безопасности. Однако если все же нужно организовать доступ пользователей к файлу, который находится в таком каталоге, можно создать жесткую ссылку на этот файл в другом каталоге.
  3. Современные файловые системы даже на домашних персональных компьютерах могут насчитывать до нескольких десятков тысяч файлов и тысячи каталогов. Обычно у таких файловых систем сложная многоуровневая иерархическая организация - в результате пути ко многим файлам становятся очень длинными. Чтобы организовать более удобный доступ к файлу, который находится очень «глубоко» в иерархии каталогов, также можно использовать жесткую ссылку в более доступном каталоге.
  4. Полное имя некоторых программ может быть весьма длинным (например, i586-alt-linux-gcc-3.3), к таким программам удобнее обращаться при помощи сокращенного имени (жесткой ссылки) - gcc-3.3.

 

Символические (мягкие) ссылки

У жестких ссылок есть два  существенных ограничения:

  1. Жесткая ссылка может указывать только на файл, но не на каталог, потому что в противном случае в файловой системе могут возникнуть циклы – бесконечные пути.
  2. Невозможно создать на жестком диске жесткую ссылку на файл, расположенный на съемном ностиеле.

Чтобы избежать этих ограничений, были разработаны символические (их еще называют символьными) ссылки. Символьная ссылка (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 имя_каталога

 

является очень удобным способом потерять в одночасье все файлы: она рекурсивно обходит весь каталог, удаляя все, что попадется: файлы, подкаталоги, символьные ссылки. А ключ -f (--force) делает ее работу еще неотвратимее, так как подавляет запросы вида «удалить защищенный от записи файл», так что rm работает безмолвно и безостановочно.

Помните: если вы удалили  файл, значит, он уже не нужен, и не подлежит восстановлению!

Некоторые флаги команды 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]).

Информация о работе Работа с файлами и каталогами