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

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

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

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

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

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

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

Для организации интерфейса пользователя в состав Unix входит командная оболочка, называемая shell. Она выполняет следующие функции:

  • организует исполнение программ, проверяя их синтаксис, допустимость ключей и т.д.;
  • осуществляет генерацию имен файлов;
  • осуществляет переназначение ввода и вывода;
  • организует конвейеризацию;
  • осуществляет контроль среды окружения;
  • является интерпретатором развитого командного языка, позволяющего пользователю создавать сложные сценарии выполнения программ.

Существуют  различные версии shell, наиболее популярными из них являются sh (Bourne Shell), bash (Bourne Again Shell), csh (C-Shell), ksh (Korn Shell). Мы будем рассматривать bash, обычно загружаемую ОС по умолчанию.

Командная строка имеет следующий вид:

 

$ команда ключи аргументы

 

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

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

Внутренние команды языка shell представляют собой программы, находящиеся в каталоге /usr/bin. Большинство из них имеют следующий формат:

 

имя_команды ключи аргументы

 

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

Свойство ключа быть, с одной  стороны, предельно коротким, а с  другой стороны – информативным, называется аббревиативностью. Не только ключи, но и имена наиболее распространенных команд Unix обладают этим свойством. Аббревиативность ключей трудно соблюсти, когда их у команды слишком много. Некоторые буквы латинского алфавита (например, s или o) используются очень часто, и могли бы служить сокращением сразу нескольких команд. На такой случай существует другой, полнословный формат: ключ начинается на два знака «-», за которыми следует полное имя ключа. Таков, например, ключ --wildcards.

А некоторые ключи могут обозначаться как коротким, так и полным именем, например ключ с коротким именем -h имеет аналог с длинным именем --help.

Аргументы команды (или параметры  команды) указывают на объекты, над  которыми выполняются операции. Аргументами  команд в большинстве случаев  являются имена файлов. Например, приведенная  ниже команда означает: «Выполнить команду ls (отображение информации о файле) с ключом -l (подробная информация) для файла а.out»:

 

ls -l а.out

 

Если необходимо использовать два  и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:

 

ls -lg a.out

1s -l -g a.out

 

Некоторые ключи требуют наличия  параметра. В этом случае параметр дается после ключа, в этом случае последний  нельзя объединять с другим ключом.

В одной строке может содержаться несколько  команд. Они отделяются друг от друга  символом «;».

Одну команду  можно разместить на нескольких экранных строках. Для этого перед нажатием клавиши [Enter] необходимо поставить символ «\».

Командный процессор  shell ищет имена команд в указанном наборе каталогов, который можно изменить по желанию пользователя. Список этих каталогов является значением переменной среды PATH.

 

Получение справки о командах Unix

Получить  справку о работе команд Unix можно несколькими способами.

 

1. Страницы руководства (manpages)  содержат больше всего полезной информации. Каждая страница руководства посвящена какому-нибудь одному объекту системы. Для того чтобы посмотреть страницу руководства по какой-либо команде, нужно дать команду

 

man [номер_раздела] [имя_объекта]

 

Номера и названия разделов руководства:

  1. Команды пользователя.
  2. Системные вызовы (пользовательские функции ядра Unix; руководства рассчитаны на программиста, знающего язык С).
  3. Библиотечные функции (функции, принадлежащие всевозможным библиотекам подпрограмм; руководства рассчитаны на программиста, знающего язык С).
  4. Внешние устройства и работа с ними.
  5. Форматы различных стандартных файлов системы (например, конфигурационных).
  6. Игры, безделушки и прочие вещи, не имеющие системной ценности.
  7. Теоретические положения, договоренности и все, что не может быть классифицировано.
  8. Инструменты администратора (часто недоступные обычному пользователю).
  9. Интерфейс ядра (внутренние функции и структуры данных ядра Unix, необходимые только системному программисту, исправляющему или дополняющему ядро).

Например, если нужно просмотреть  справку о работе команды find, необходимо выполнить команду

 

man 1 find

 

Как правило, команда man сама находит раздел с требуемой справкой, просматривая все разделы по очереди, поэтому для получения справки по команде find достаточно ввести

 

man find

 

Для получения  списка разделов, в которых встречается  требуемый термин используется ключ -l.

Страница  руководства занимает, как правило, больше одной страницы экрана. Страницы перелистываются вниз с помощью  клавиши пробела или клавиши [Page Down], вверх – с помощью клавиши [Page Up], для сдвига на одну строку вперед можно применять Enter или клавишу [Стрелка вниз], а на одну строку назад – клавишу  [Стрелка вверх]. Переход на начало и конец текста выполняется по нажатию клавиш [g] и [G] соответственно (Go). Выход осуществляется по нажатию клавиши [q] (Quit).

 

2. Info

Другой источник информации о Unix и составляющих ее программах – справочная подсистема info. Страница руководства, несмотря на обилие ссылок различного типа, остается линейным текстом, структурированным только логически. Документ info структурирован прежде всего топологически – это настоящий гипертекст, в котором множество небольших страниц объединены в дерево. В каждом разделе документа info всегда есть оглавление, из которого можно перейти сразу к нужному подразделу, откуда всегда можно вернуться обратно. Кроме того, info-документ можно читать и как непрерывный текст, поэтому в каждом подразделе есть ссылки на предыдущий и последующий подразделы:

Одна или  несколько страниц, которые можно  перелистывать клавишей [Пробел] или [Page Up]/[Page Down] – это узел (node). Узел содержит обычный текст и меню (menu) – список ссылок на другие узлы, лежащие в дереве на более низком уровне. Ссылки внутри документа имеют вид * имя_узла::, и перемещать по ним курсор можно клавишей [Tab], а переходить к просмотру выбранного узла – клавишей [Enter]. Вернуться к предыдущему просмотренному узлу можно клавишей [l] (Last). Выйти из программы info можно, нажав [q] (Quit). Более подробную справку об управлении программой info можно в любой момент получить у самой info, нажав [?]. Узлы, составляющие документ info, можно просматривать и подряд, один за другим (с помощью команд [n] (Next) и [p] (Previous)), однако это используется нечасто. В верхней строке экрана info показывает имя текущего узла, имя следующего узла и имя родительского (или верхнего) узла, в котором находится ссылка на текущий. 

 

3. Использование ключей -h и --help

У каждой команды  Unix есть ключ -h и эквивалентный ему ключ --help, и пользователь, запустив команду с одним из этих ключей, может просмотреть краткую справку об использовании данной команды.

Домашние  каталоги пользователей

В Unix у каждого пользователя обязательно есть собственный каталог, который и становится текущим сразу после регистрации в системе – домашний каталог. Домашние каталоги пользователей хранятся в каталоге /home. Например, для пользователя anna домашним каталогом является /home/anna.

Домашний каталог (home directory) – это каталог, предназначенный для хранения собственных данных пользователя Unix. Как правило, домашний каталог является текущим непосредственно после регистрации пользователя в системе. Полный путь к домашнему каталогу хранится в переменной среды HOME.

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

Операции  над файлами и каталогами

 

Определение имени текущего каталога

Команда pwd (от англ. print working directory – напечатать имя рабочего каталога), вызываемая без параметров, возвращает полный путь текущего каталога, в котором находится пользователь.

 

Получение информации о  каталоге или файле

Чтобы иметь возможность  ориентироваться в файловой системе, нужно знать, что содержится в  каждом каталоге. Запомнить всю структуру  файловой системы невозможно и не нужно: в любой момент можно просмотреть  содержимое любого каталога при помощи команды ls (от англ. list - список).

Поданная без параметров, команда ls выводит список файлов и каталогов, содержащихся в текущем каталоге.

Команда ls принимает в качестве параметра имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути.

Например, чтобы получить список файлов в каталоге /usr/sbin, необходимо использовать команду

 

ls /usr/sbin

 

У команды ls есть множество ключей, которые нужны главным образом для того, чтобы выводить дополнительную информацию о файлах в каталоге или выводить указанный список файлов (вместо указания имен файлов можно использовать шаблоны). Ниже приведены наиболее употребительные флаги команды ls.

 

-a, --all

выводит список всех имен файлов каталога, включая скрытые

-А,

--almost-all

выводит список всех имен файлов каталога, кроме текущего (.) и родительского (..) каталога

-d,

--directory

выводит имена вложенных каталогов  без их содержимого

-I pattern,

--ignore=pattern

Не включает в выводимый список файлы, имена которых совпадают  с шаблоном pattern

-R, --recursive

отображает рекурсивно содержимое всех каталогов

-l,

--format=long

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

-r, --reverse

при использовании сортировки ее порядок  меняется на обратный

-S, --sort=size

сортирует файлы по размеру: самые  большие файлы идут первыми

-t, --sort=time

сортирует файлы по времени модификации: самые новые файлы идут первыми

-X,

--sort=extension

сортирует файлы по расширениям; файлы  без расширений располагаются раньше

-U, --sort=none

не выполняет сортировку и включает в список файлы в том порядке, в котором они идут в каталоге

-u, --time=atime

при использовании длинного формата  вывода вместо даты/времени последней  модификации выводится дату/время  последнего доступа к файлу

--color

для распознавания типов файлов использовать различные цвета

-F, --classify

добавляет к каждому имени файла  символ, указывающий тип:

* - обычные исполняемые файлы

/ - каталоги

@ - символические ссылки

= - сокеты

| - именованные каналы

-T cols,

--tabsize=cols

табулирует в соответствии с  шириной столбца, равной cols (по умолчанию 8)


 

Примеры.

Вывод подробной информации о файлах текущего каталога, имена которых  начинаются и заканчиваются на цифру  с применением различных цветов:

 

ls –l ./[0-9]*[0-9] --color

 

Вывод подробной информации о содержимом каталога /usr/lib без содержимого вложенных каталогов и отображение имен файлов в обратном алфавитном порядке:

 

ls –ldr /usr/lib

Перемещение по дереву каталогов 

Пользователь может работать с файлами не только в своем  домашнем каталоге, но и в других каталогах. В этом случае будет удобно сменить текущий каталог, т. е. переместиться  в другую точку файловой системы. Для смены текущего каталога командной  оболочки используется команда cd (от англ. change directory - сменить каталог). Команда cd принимает один параметр: имя каталога, в который нужно переместиться - сделать текущим. Как обычно, в качестве имени каталога можно использовать полный или относительный путь:

 

cd /usr/lib

 

Для перемещения в родительский каталог удобно воспользоваться  командой cd ..

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

 

cd ~

 

При исполнении команды символ «~» будет заменен командной  оболочкой на полный путь к домашнему  каталогу пользователя.

При помощи символа «~» можно  ссылаться и на домашние каталоги других пользователей при помощи конструкции ~имя_пользователя. Например, пользователь anna при выполнении команды

 

cd ~victor

 

может перейти в домашний каталог  пользователя victor.

Команда cd, поданная без параметров, эквивалентна команде cd ~ и делает текущим каталогом домашний каталог пользователя.

 

 

Создание каталогов

Для создания каталога используется команда mkdir (от англ. make directory - создать каталог). Она применяется с обязательным параметром: именем создаваемого каталога (или списком имен каталогов, указанных через пробел). По умолчанию каталог будет создан в текущем каталоге. Например, команда:

 

mkdir examples texts

 

приведет к созданию каталогов  examples и texts в каталоге, в котором находится в текущий момент создающий их пользователь.

Если указать перед именем создаваемого каталога полный или относительный  путь к нему, то каталог будет  создан в соответствии с указанной  иерархией каталогов:

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