Автор: Пользователь скрыл имя, 21 Февраля 2013 в 20:34, доклад
Файловая система – это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными.
Под файлами понимается логически связанная совокупность данных, ассоциированная с носителем информации и внешним устройством. Файл является абстрактным понятием, и его свойства не зависят от носителя информации.
Существуют различные версии 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.
А некоторые ключи могут
Аргументы команды (или параметры команды) указывают на объекты, над которыми выполняются операции. Аргументами команд в большинстве случаев являются имена файлов. Например, приведенная ниже команда означает: «Выполнить команду ls (отображение информации о файле) с ключом -l (подробная информация) для файла а.out»:
ls -l а.out
Если необходимо использовать два и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:
ls -lg a.out
1s -l -g a.out
Некоторые ключи требуют наличия параметра. В этом случае параметр дается после ключа, в этом случае последний нельзя объединять с другим ключом.
В одной строке может содержаться несколько команд. Они отделяются друг от друга символом «;».
Одну команду можно разместить на нескольких экранных строках. Для этого перед нажатием клавиши [Enter] необходимо поставить символ «\».
Командный процессор shell ищет имена команд в указанном наборе каталогов, который можно изменить по желанию пользователя. Список этих каталогов является значением переменной среды PATH.
Получение справки о командах Unix
Получить справку о работе команд Unix можно несколькими способами.
1. Страницы руководства (manpages) содержат больше всего полезной информации. Каждая страница руководства посвящена какому-нибудь одному объекту системы. Для того чтобы посмотреть страницу руководства по какой-либо команде, нужно дать команду
man [номер_раздела] [имя_объекта]
Номера и названия разделов руководства:
Например, если нужно просмотреть справку о работе команды 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 в каталоге, в котором находится в текущий момент создающий их пользователь.
Если указать перед именем создаваемого каталога полный или относительный путь к нему, то каталог будет создан в соответствии с указанной иерархией каталогов: