Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

операционные системы_Жаров

.pdf
Скачиваний:
17
Добавлен:
29.05.2015
Размер:
855.71 Кб
Скачать

Для того чтобы получить подробную информацию об объекте применяется команда ls –l. Результаты команды ls -l обозначают (слева направо):

первый символ – тип файла. Возможны следующие значения: d – каталог;

p – именованный канал (pipe);

l – символическая ссылка (link);

s – сокет (socket);

b – блочное устройство;

с – символьное устройство;

- – обычный файл.

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

количество жестких ссылок на файл;

имя владельца файла;

имя группы, которой принадлежит владелец файла;

размер файла (в байтах);

время его последней модификации.

Структуру каталогов также можно отобразить и в виде дерева, используя

команду tree.

Задание 6:

1.Внесите в отчет информацию о назначении, формате и основных ключах команд pwd, cd, file, ls и tree.

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

Отобразите полный путь до текущего каталога, в котором вы сейчас находитесь.

3.Отобразите структуру корневого каталога.

4.Внесите в отчет информацию о структуре и назначении каталогов корневой директории.

5.Определите тип файлов (file).

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

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

8.Отобразите содержимое домашней директории в виде дерева.

9. Внесите в отчѐт строку, наиболее полно характеризующую домашнюю директорию.

10. Отобразите содержимое текущей директории с учѐтом конфигурационных файлов в одноколоночном формате, отображая номер inode.

Как правило, командная оболочка выделяет файлы различных типов определенным цветом. Следует учитывать, что для операционной системы файл

11

представляет собой простой поток байтов, и поэтому, помимо каталогов и традиционных файлов, Linux рассматривает как файлы и некоторые другие объекты,

аименно:

1.файлы физических устройств;

2.символические ссылки;

3.FIFO (именованные каналы);

4.сокеты (гнезда).

По умолчанию, GNU/Linux предлагает стандартную цветовую схему, информацию о которой можно узнать, воспользовавшись командой dircolors –p.

Задание 7:

1.Используя встроенные средства справки, определите и внесите в отчет информацию о назначении и синтаксисе команды dircolors.

2.Определите и внесите в отчет, какие файлы хранят цветовые настройки, которые использует программа dircolors.

3.Определите и укажите стандартные цветовые настройки для следующих типов файлов:

каталоги;

именованные каналы;

символические ссылки;

сокеты;

блочные устройства;

символьные устройства;

исполняемые файлы

архивные и сжатые файлы;

файлы рисунков и видео-файлы;

аудио-файлы.

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

владелец файла;

владелец группы (owner group) – пользователь, входящий в группу, ассоциированную с файлом;

другие – остальные пользователи, отличные от владельца файла и группы.

Существуют три различных варианта прав:

Read (права на чтение) (r): разрешает чтение содержимого файла . Для каталога это обозначает разрешение просмотра его содержимого (то есть файлов в этом каталоге).

12

Write (права на запись) (w): позволяет изменение содержимого файла. Для каталога права на запись позволяют пользователю добавлять и/или удалять файлы в этом каталоге, даже если пользователь не является владельцем этих файлов.

eXecute (права на запуск/поиск) (x): разрешает запуск файла (как следствие, все выполняемые файлы обычно идут с этими установленными правами). Если данное право установлено для каталога, то пользователь может пересекать(traverse) его (что означает вход в каталог или проход через него). Заметьте, что сам по себе проход через каталог еще не дает Вам возможности чтения его содержимого.

Обратите внимание на то, что возможны любые комбинации этих прав.

Однако следует учитывать, что существует одно исключение из этих правил – пользователь root. Администратор системы может изменять атрибуты (права, владельца и владельца группы) всех файлов, даже если он не является владельцем. Это означает, что он также может предоставлять себе монопольное право на использование!

Задание 8:

Проведите сравнение прав для двух каталогов: домашней директории пользователя student и директории home (находится в корневой директории). Укажите результаты сравнения в отчете.

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

Для создания каталогов используется команда mkdir. Команда имеет следующий синтаксис:

mkdir [опции] <каталог> [каталог ...]

Обязательный аргумент каталог содержит путь и имя каталога, который необходимо создать. В команде mkdir могут использоваться как абсолютные, так и относительные пути. Следует учитывать, что команда mkdir без дополнительных опций может использоваться только для создания единичных каталогов (в отличие от аналогичной команды в Windows). Если необходимо создать сразу целую ветвь дерева в синтаксисе команды необходимо указать ключ –p. Например:

[student@localhost: ̃]$ mkdir –p aaa/ddd/fff

Этой командой создаѐтся ветвь дерева из трѐх последовательно вложенных каталогов.

Использование ключа –p позволяет также скрывать сообщение операционной системы о том, что данный каталог существует, если он создаѐтся повторно.

Возможно также создавать сразу несколько ветвей каталогов, указывая пути через пробел:

[student@localhost: ̃]$ mkdir –p a/b/c a/d/e

13

Задание 9:

1. В домашней директории создайте дерево каталогов, приведенное на рисунке:

Удалить пустой каталог можно с помощью команды rmdir. Как и в случае с командой mkdir, команда rmdir, указанная без ключей, служит для удаления единичных каталогов. Для того, чтобы сразу удалить целую ветвь дерева в синтаксис команды добавляется ключ –р. Однако, следует учитывать, что если в указанном пути существует каталог, который является родительским для двух или более каталогов более низкого уровня, или же в нем содержатся файлы, то команда завершится с ошибкой Directory not empty (директория не пуста). Для того чтобы удалить каталог, содержащий файлы и другие непустые каталоги необходимо использовать команду rm (ReMove). Команда имеет следующий синтаксис:

rm [опции] <файл|каталог> [файл|каталог...]

Основные опции:

-r или -R: рекурсивное удаление. Ключ обязателен для удаления каталогов, даже пустых;

14

-i: запрос подтверждения перед удалением любого файла, который может быть перезаписан;

-f: параметр, обратный –i. Удаление файлов и каталогов без подтвержде-

ния.

2.6 Создание и удаление файлов

На сегодняшний день существует огромное количество типов файлов – графических, текстовых, звуковых и т.д., для создания которых пользователь должен использовать соответствующую программу. Однако и сам Linux- терминал дает возможность создавать текстовые файлы путем перенапрвления в них информации с дисплея монитора, который является стандартным выводом системы.

Стандартный вывод (standard output, stdout) - это поток данных, от-

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

Для организации перенаправления используется оператор « > ». Например, запись

[student@localhost: ̃]$ ls / > list_dir

запишет в файл list_dir, расположенный в домашнем каталоге пользователя, перечень каталогов, корневой директории. Если файла list_dir не существует, то он будет автоматически создан.

Аналогично понятию стандартного вывода используется и понятие стандартного ввода. По умолчанию стандартным вводом системы является клавиатура, однако каждый процесс может иметь свой собственный стандартный ввод. Таким образом, стандартный ввод (standard input, stdin) - это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для ввода данных.

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

[student@localhost: ̃]$ cat file1 file2 … fileN > newFile

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

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

вид:

[student@localhost: ̃]$ cat > newFile,

то в конечный файл newFile будет направляться поток данных со стандартного ввода системы (клавиатуры), а информация, которую напечатает пользователь, будет записана в этот файл. Для завершения ввода данных следует нажать комбинацию клавиш Ctrl+D или Ctrl+С, что приведет к прерыванию работы команды.

15

Следует учитывать, что, если файл с указанным именем уже существует, то команда cat перезапишет его. Чтобы избежать этого и добавить данные в конец файла, следует использовать перенаправление ввода-вывода в виде:

[student@localhost: ̃]$ cat >> newFile

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

[student@localhost: ̃]$ cat file,

то содержимое файла будет отображено на дисплее.

Другим полезным свойством команды cat является возможность перенаправления вывода из устройств и псевдоустройств. В качестве примера направим вывод псевдоустройства /dev/urandom, которое генерирует случайную числовую последовательность на монитор:

[student@localhost: ̃]$ cat /dev/urandom

Для завершения работы команды следует нажать комбинацию клавиш

Ctrl+D или Ctrl+С.

Еще одну возможность быстро создавать пустые файлы дает команда touch. Команда предназначена для изменения временных штампов (времен последнего доступа и модификации) указанного файла, но если такого файла не существует, то он будет создан. Более подробную информацию о команде можно получить в справочном руководстве man

Задание 10:

1.Внесите в отчет информацию о назначении, формате и основных ключах команд cat, touch и yes.

2.Внесите в отчет информацию о назначении псевдоустройства

/dev/urandom.

3.Создайте в каталоге my_files файл с именем tutorial, в котором хранится копия вывода справки man для команды cat.

4. Создайте в каталоге my_files файл с именем my_name, в котором должны быть записаны Ваше имя, фамилия, отчество и учебная группа.

5.Используя команду cat и вывод псевдоустройства /dev/urandom, создайте в каталоге random_files файл rnd размером более 150 Мб, содержащий случайный набор символов.

6.Используя команду yes, создайте в каталоге arch файл text размером более 150 Мб, содержащий строку “Текстовый файл, содержащий информацию для архивирования”.

16

2.7 Копирование и перемещение файлов

Для выполнения операций копирования и переноса в ОС GNU/Linux применяются соответственно команды cp и mv. Команды имеют следующий формат:

cp [опции] <файл|каталог> [файл|каталог ...] <путь>

Основные опции:

-R или -r: рекурсивное копирование; Ключ обязателен для копирования каталогов, даже пустых;

-i: запрос подтверждения перед перезаписью любого файла, который может быть перезаписан;

-f: параметр, обратный –i. Если он указан, то команда cp заменяет любой существующий файл без подтверждения.

-v: подробный (verbose) режим, отображает все действия, производимые командой cp.

mv [опции] <файл|каталог> [файл|каталог ...] <путь>

Основные опции: -i, -f, -v. Смысл указанных ключей тот же, что и для команды cp.

Обязательный атрибут <файл|каталог> содержит файл, каталог (или их перечень), который необходимо скопировать или перенести. Параметр <путь> является либо файлом-получателем (если осуществляется процедура копирования одного файла в другой, с заданным именем), либо каталогом-получателем. При этом следует учитывать, что если осуществляется процедура копирования (переноса) сразу нескольких файлов (каталогов), то в качестве атрибутаприѐмника обязательно должен использоваться каталог. В качестве имен файлов можно использовать символ *, который обозначает все файлы.

Задание 11:

1.Внесите в отчет информацию о назначении, формате и основных ключах команд cp и mv.

2.Используя команду cp, скопируйте файл rnd в каталог split_files . Переименуйте скопированный файл rnd в файл с именем r_split.

2.8Разбиение файлов большого объема

При работе с большими по объему файлами приходится сталкиваться с необходимостью разбивать исходный файл на несколько меньших частей (например, для переноса на другую ЭВМ c использованием ограниченных по объему носителей) с возможностью последующей сборки в исходный файл.

В GNU/Linux для этого предназначена команда split. Команда split копирует файл, разбивая его на отдельные файлы заданной длины:

17

split [опции] [входной файл [префикс]]

Основные опции:

-a: использовать суффикс заданной длины (по умолчанию два символа). Параметр определяет количество символов, которыми будет дополнен префикс в имени конечных файлов;

-b: задает размер конечных файлов в формате -b <число> [суффикс], где <число> - показывает собственно размер, а [суффикс] указывает единицу измерения. Без суффикса – байты, k – килобайты, m – мегабайты.

В качестве входного файла указывается имя исходного разбиваемого файла, а в качестве префикса часть имени выходных файлов. Конечные имена выходных файлов будут составляться из этого префикса и, по умолчанию, двух дополнительных букв 'aa', 'ab', 'ac' и т. д. (без пробелов и точек между префиксом и буквами). Если префикс имен файлов не задан, то по умолчанию используется 'x'. Следует учитывать, что в случае, когда выходные файлы должны создаваться в каталоге отличном от текущего, то префикс должен включать путь до этого каталога.

Для восстановления файлов можно воспользоваться командой cat.

Задание 12:

1.Внесите в отчет информацию о назначении, формате и основных ключах команды split.

2.Разбейте файл r_split на пять приблизительно одинаковых частей. Имена выходных файлов должны иметь вид:archiv0, archiv1…archiv4.

3.Скопируйте все выходные файлы в каталог arch.

2.9Архивирование файлов

Основным средством архивирования в GNU/Linux является комплекс из двух программ, использующихся в большинстве UNIX-систем – tar и gzip (или

bzip2).

Программа tar (Tape ARchiver) сама по себе не сжимает данные, а лишь объединяет их в единый архивный файл с последовательным доступом. Для последующего сжатия архивного файла используется программа gzip или bzip2, которая обеспечивает более высокую степень сжатия и скорость архивирования, чем gzip. Рассмотрим команды более подробно.

tar [опции][файлы...]

-c: создания нового архива;

-x: извлечение файлов из архива

-t: предоставляет список файлов в существующем архиве; -v: вывод списка файлов в архиве;

-r: добавление файлов в конец архива;

18

-u: обновление архива. В архив добавляются только те файлы, которые имеют более новые временные штампы, чем существующие в архиве;

-f <file>: создает архив с именем <file>, извлекает из архива с именем <file> или получает список файлов в архиве с именем <file>. Если этот параметр отсутствует, то файлом по умолчанию будет /dev/rmt0, который является специальным файлом, связанным с устройством streamer (магнитная лента). Если вместо имени файла подставить - (минус), ввод или вывод (в зависимости от того, создается или разворачивается архив) будет ассоциирован со стандартным вводом или стандартным выводом;

-z: указывает, что после создания архива он должен быть сжат программой gzip, или, что разворачиваемый архив сжат gzip;

-j: указывает, что после создания архива он должен быть сжат программой bzip2, или, что разворачиваемый архив сжат bzip2.

Пример: Необходимо создать архив с именем arch, состоящий из файлов file1 и file2:

[student@localhost: ] ̃$ tar –cf arch file1 file2

Для сжатия архивного пакета используются команды gzip и bzip2 gzip [опции] файл

Основные опции:

-l: выдает имя файла, содержащегося в архиве, его объем и степень сжа-

тия;

-q: отменяет вывод на экран предупреждающих сообщений; -t: тестирование архивного файла;

-1 : быстрое сжатие; -9: наилучашая степень сжатия.

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

bzip2 [опции] файл

Основные опции:

-d: принудительная разархивация; -z: принудительная архивация;

-k: сохранять исходные файлы при архивации и разархивации; -q: отменяет вывод на экран предупреждающих сообщений.

В некоторых случаях сжатый файл может оказаться даже больше по размеру, чем исходный. Это происходит, например, если длина файла менее 100 байт, потому что механизм сжатия использует заголовок длиной около 50 байт.

19

Для файлов, представляющих собой случайную последовательность символов (в том числе для выходных файлов большинства файловых архиваторов) длина файла увеличивается примерно на 0,5% в сравнении с исходным файлом.

Задание 13:

1.Внесите в отчет информацию о назначении, формате и основных ключах команд tar, gzip и bzip2.

2.В каталоге arch создайте архив с именем temp, который включает в себя файлы archiv0, archiv1…archiv4, расположенные в этом же каталоге. Проанализируйте объем файла temp и суммарный объем исходных файлов.

3.В каталоге arch создайте три копии файла temp с именами: gtemp1, gtemp2

и b2temp.

4.В каталоге arch создайте три копии файла text с именами: gtext1, gtext2и b2text.

5.Используя архиватор gzip, сожмите файлы gtemp1 и gtext1 с максимально быстрым сжатием.

6.Используя архиватор gzip, сожмите файлы gtemp2 и gtext2 с максимальной компрессией.

7.Используя архиватор bzip2, сожмите файлы b2temp и b2text.

8.Поместите в отчет и заполните сравнительную таблицу:

Файл

Архиватор

Размер до

Размер после

Степень

 

 

сжатия

сжатия

компрессии

gtemp1

gzip

 

 

 

gtext1

gzip

 

 

 

gtemp2

gzip

 

 

 

gtext2

gzip

 

 

 

b2temp

bzip2

 

 

 

b2text

bzip2

 

 

 

9. Проведите развернутый анализ итогов архивации. Результаты анализа следует отобразить в отчете.

2.10Мягкие и жесткие ссылки

ВОС Linux каждому файлу соответствует индексный дескриптор (inode), содержащий всю информацию о данном файле, которая необходима файловой системе. Индексные дескрипторы файлов объединяются в специальную таблицу (inode table), которая создается при создании файловой системы на каждом физическом и логическом носителе. Именно номер дескриптора файла inode является его истинным именем в системе. С другой стороны, для удобства пользователей файлам присвоены еще и символьные имена, которые, по сути, являются ссылками на inode файла. Поэтому, каждый файл в Linux может иметь сколько угодно разных имен, называемых также «жесткими» ссылками (hard link), и все эти имена будут считаться операционной системой истинными. При удалении файла, имеющего несколько имен, фактически удаляется лишь одна из «жестких» ссылок, а сам файл сохраняется в системе до тех пор, пока для

20