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

LINUX / KOZLOV2_1

.pdf
Скачиваний:
86
Добавлен:
27.03.2016
Размер:
4.3 Mб
Скачать

Чтобы переместить файл из одного каталога в другой, нужно в качестве первого параметра при команде mv задать имя_файла, а в качестве второго абсолютный или относительный путь места назначения.

Вследующем примере, находясь в домашнем каталоге пользователя (/home/antonk),

сиспользованием группового символа «знака вопроса» осуществим перемещение всех командных файлов Perl, имеющих в своем названии один символ, из директории

/home/antonk/source_perl в директорию /home/antonk/copy: [antonk@lab4236s ~]$ pwd /home/antonk [antonk@lab4236s ~]$ ls -l /home/antonk/source_perl/ total 4

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 l.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 2.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 3.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 4.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 5.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 6.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 7.pl

-rwxr-xr-x 1 antonk antonk

123 Sep 28 15:23 p.pl

[antonk@lab4236s ~]$ ls -l

/home/antonk/copy/

total 12

 

-rw-rw-r– 1 antonk antonk

1962 Sep 28 15:13 qqq

-rw-rw-r– 1 antonk antonk

59 Sep 28 15:13 rrr

-rw-rw-r– 1 antonk antonk

243 Sep 28 15:13 yyyy

[antonk@lab4236s ~]$ mv ~/source_perl/?.pl ~/copy/

[antonk@lab4236s ~]$ ls -l

/home/antonk/copy/

total 16

 

 

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 l.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 2.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 3.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 4.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 5.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 6.pl

-rw-rw-r– 1 antonk antonk

0

Sep 28 15:23 7.pl

-rwxr-xr-x 1 antonk antonk

123 Sep 28 15:23 p.pl

-rw-rw-r– 1 antonk antonk

1962 Sep 28 15:13 qqq

 

 

41

PDF created with pdfFactory Pro trial version www.pdffactory.com

-rw-rw-r– 1 antonk antonk

59 Sep 28 15:13 rrr

-rw-rw-r– 1 antonk antonk

243 Sep 28 15:13 yyyy

[antonk@lab4236s ~]$

 

Команда pwd возвращает абсолютный путь текущего местоположения. Важно заметить, что домашняя директория пользователя заменяется символом «волнистой линии». В нашем случае под «волнистой линией» понимается путь /home/antonk.

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

ВОС Linux предусмотрена возможность копировать и перемещать целые каталоги.

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

Подкаталоги (вложенные директории) можно так же легко, как и файлы, копировать из одного каталога в другой. Для копирования каталога команду ср необходимо использовать с опцией -r (сокращение от recursive рекурсивный). Эта опция дает команде ср указание копировать каталог вместе со всеми его подкаталогами. Другими словами, копируется все поддерево каталогов, начиная с указанного.

Вследующем примере скопируем каталог copy со всем его содержимым в каталог

source_perl:

[antonk@lab4236s ~]$ cp -r copy/ source_perl/ [antonk@lab4236s ~]$ cd source_perl/ [antonk@lab4236s source_perl]$ ls -l

total 4

drwxrwxr-x 2 antonk antonk 4096 Sep 28 17:40 copy

[antonk@lab4236s source_perl]$

Удаление файлов. В процессе работы разработчика СБИС с ОС Linux количество проектов будет неуклонно расти, часть из которых следует удалять, например, ошибочные или ненужные проекты, а также отдельные данные в этих проектах. Новые файлы появляются в этой системе очень часто. Их можно удалить посредством команды rm. Синтаксис командной строки rm выглядит следующим образом: rm опция имена_файлов.

42

PDF created with pdfFactory Pro trial version www.pdffactory.com

Вследующем примере пользователь antonk удаляет в текущей директории файлы «rrr» , «qqq2» и «7.pl». Опция –i требуется для запроса подтверждения удаления каждого объекта. Если вы введете «у», файл будет удален. При любом ином ответе файл не удаляется. Совместно с командой rm также применимы групповые символы, например, символ «звездочки»:

[antonk@lab4236s ~]$ rm -i qqq2 rrr 7.pl rm: remove regular file 'qqq2'? y

rm: remove regular file 'rrr'? y

rm: remove regular empty file '7.pl'? y

[antonk@lab4236s ~]$

Если вам требуется удалить каталог и все его подкаталоги, применяется команда rm с опцией -r. Будьте очень внимательны, при неправильном ее использовании можно легко стереть все свои файлы.

Вследующем примере показано, как удалить каталог source_perl с подкаталогом copy и его содержимым:

[antonk@lab4236s ~]$ ls -l source_perl/ total 4

drwxrwxr-x 2 antonk antonk 4096 Sep 28 17:40 copy

[antonk@lab4236s ~]$ rm -ri source_perl/ rm: descend into directory «source_perl/'? y

rm: descend into directory «source_perl/copy'? y

rm: remove regular empty file «source_perl/copy/4.pl' y rm: remove regular file «source_perl/copy/qqq'? y

rm: remove regular empty file «source_perl/copy/7.pl' y rm: remove regular empty file «source_perl/copy/6.pl' y rm: remove regular empty file «source_perl/copy/5.pl' y rm: remove regular file «source_perl/copy/p.pl'? y

rm: remove regular empty file «source_perl/copy/2.pl' y rm: remove regular empty file «source_perl/copy/l.pl' y rm: remove regular file «source_perl/copy/yyyy'? y rm: remove regular file «source_perl/copy/rrr'? y

rm: remove regular empty file «source_perl/copy/3.pl' y rm: remove directory «source_perl/copy'? y

rm: remove directory «source_perl/'? y

[antonk@lab4236s ~]$

43

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ссылки – команда ln. Довольно часто разработчики СБИС сталкиваются с необходимостью иметь доступ к ОФС, например к файлам-комментариям своего проекта, из разных мест файловой системы или файловой структуры. Так, часто разным пользователям приходится вносить изменения в один и тот же проект, например, из

домашних каталогов разных пользователей ссылаться на один общий проект в пользовательской папке одного из разработчиков или располагающийся на общем ресурсе внутри данной файловой системы, или на смонтированном внешнем сетевом ресурсе, например, с помощью системы NFS. В этом случае удобно использовать такой тип данных ОС Linux, как ссылки.

Назначение ссылок осуществляется с помощью команды ln. Команда ln принимает два параметра: имя исходного файла и новое, дополнительное, имя файла. В операции ln указываются оба имени, но в действительности существует лишь один физический файл. Синтаксис команды следующий: ln исходное_имя_файла ссылка.

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

В следующем примере файлу rc, находящемуся в папке /etc, присваивается ссылка link. С его помощью также можно обратиться к файлу /etc/rc.

[antonk@lab4236s ~]$ ln -s /etc/rc link [antonk@lab4236s ~]$ ls -l link

lrwxrwxrwx 1 antonk antonk 7 Sep 30 11:06 link -> /etc/rc

[antonk@lab4236s ~]$

У одного ОФС может быть сколько угодно ссылок. Важно, чтобы несколько ссылок с

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

ссылка. Вместо имени объекта в последней колонке показано, что link ссылается на файл

/etc/rc.

Используя команду расширенного вывода ls с опцией -l можно выяснить, есть ли у файла ссылки. Эта команда позволяет получить следующую информацию: права доступа, количество ссылок, размер файла и дату последнего изменения. Первое число перед именем владельца файла это количество ссылок, число перед датой размер файла.

В следующем примере создадим еще одну ссылку к файлу /etc/rc и сравним сведения по ссылкам:

[antonk@lab4236s ~]$ ln -s /etc/rc link2

44

PDF created with pdfFactory Pro trial version www.pdffactory.com

[antonk@lab4236s ~]$ ls -l

link*

 

lrwxrwxrwx 1 antonk antonk

7 Sep 30

11:06 link -> /etc/rc

lrwxrwxrwx 1 antonk antonk

7 Sep 30

11:09 link2 -> /etc/rc

[antonk@lab4236s ~]$

 

 

Следует обратить внимание на то, что размеры этих двух ссылок равны, так как ссылаются они на один и тот же файл. Ранее мы создавали символьные ссылки (команда ln с опцией -s), т.е. такие ссылки, которые, с одной стороны, имеют малый размер и могут ссылаться на любой элемент не только файловой системы, но даже файловой структуры (структура объединяет разные системы), но, с другой стороны, являясь неким ярлыком, становятся бесполезными при потере оригинального объекта. Однако если необходимо создать ссылку, которая служила бы дополнительным именем объекта, требуется создание жесткой ссылки. Достоинство жесткой ссылки состоит в том, что она является тем же самым объектом, на который она ссылается.

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

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

В следующем примере попытаемся назначить жесткую ссылку link_rc в файловой системе, смонтированной в /home-раздел, к файлу rc, располагающемуся в другой системе, смонтированной в раздел /etc:

[antonk@lab4236s ~]$ ln /etc/rc link_rc

ln: creating hard link 'link_rc' to 'Vetc/rc': Invalid cross-device link

[antonk@lab4236s ~]$ ln -s /etc/rc link_rc [antonk@lab4236s ~]$ ls -l /etc/rc

lrwxrwxrwx 1 root root 7 Feb 13 2008 /etc/rc -> rc.d/rc

[antonk@lab4236s ~]$ ls -l link_rc

45

PDF created with pdfFactory Pro trial version www.pdffactory.com

lrwxrwxrwx 1 antonk antonk 7 Sep 30 13:10 link_rc -> /etc/rc

[antonk@lab4236s ~]$

Как видно, создать жесткую ссылку к файлу rc не получилось в силу вышеперечисленного ограничения, однако мягкую ссылку создать можно, и мы создали ссылку на файл rc, который сам является ссылкой на объект /etc/rc.d/rc. Таким образом, создан механизм обращения к файлу через две ссылки.

Теперь создадим жесткую ссылку cmos_link в текущей директории к файлу cmos.doc, который располагается в текущей домашней директории пользователя antonk, и убедимся, что и ссылка, и объект имеют одинаковый inode. Для отображения расширенной информации об объекте с выводом индексного дескриптора номера inode используется команда ls с опциями –i (inode) и –l.

[antonk@lab4236s ~]$ ln cmos.doc cmos_link [antonk@lab4236s ~]$ ls -il cmos*

7929887 -rw-r–r– 2 antonk antonk 333312 Oct 30 2008 cmos.doc 7929887 -rw-r–r– 2 antonk antonk 333312 Oct 30 2008 cmos_link [antonk@lab4236s ~]$

Обратим внимание, что и объект, и ссылка на него имеют полностью одинаковые параметры (даже время и дату создания), только разные имена. Номер inode находится в самом начале строки, он одинаков и для объекта, и для ссылки. Фактически жесткая ссылка дополнительное имя объекта. Достоинство жесткой ссылки состоит в том, что, работая с ней, мы напрямую работаем с объектом. Отсюда название прямая ссылка.

Недостатком такой ссылки является невозможность ее создания в одной файловой системе на объект в другой.

Чтобы удалить файл, нужно удалить все его ссылки. Имя файла фактически рассматривается как еще одна ссылка на этот файл, т.е. с помощью команды rm удаляется именно ссылка на тот или иной файл. Если ссылок было несколько и одна из них удаляется, к файлу можно обращаться по оставшимся, даже в случае удаления исходной ссылки первоначального имени файла. Это утверждение остается справедливым и после удаления первоначальной ссылки исходного имени файла. Вместо него вполне могут применяться любые дополнительные ссылки.

В следующем примере создадим новый текстовый файл bmt_spisok путем копирования стандартного вывода данных списка всех файлов, начинающихся с комбинации «bmt», с одним произвольным символом в файл bmt_spisok. Далее создадим жесткую ссылку bmt_link на этот файл и сотрем файл-оригинал bmt_spisok. При чтении файла bmt_link мы видим, что он имеет точное содержимое файла-оригинала bmt_spisok.

46

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

[antonk@lab4236s ~]$ ls -l bmt? > bmt_spisok [antonk@lab4236s ~]$ cat bmt_spisok

-rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmtl -rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmt2 -rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmt3 -rw-rw-r– 1 antonk antonk 42 Sep 21 15:11 bmt?

[antonk@lab4236s ~]$ ln bmt_spisok bmt_link [antonk@lab4236s ~]$ ls -l bmt_spisok bmt_link

-rw-rw-r– 2 antonk antonk 192 Sep 30 15:35 bmt_link -rw-rw-r– 2 antonk antonk 192 Sep 30 15:35 bmt_spisok

[antonk@lab4236s ~]$ rm bmt_spisok [antonk@lab4236s ~]$ cat bmt_link

-rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmt1 -rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmt2 -rw-rw-r– 1 antonk antonk 0 Sep 21 15:11 bmt3 -rw-rw-r– 1 antonk antonk 42 Sep 21 15:11 bmt?

[antonk@lab4236s ~]$

47

PDF created with pdfFactory Pro trial version www.pdffactory.com

Контрольные вопросы

1.Назовите основные особенности ОС Linux. В чем заключаются преимущества данной платформы перед другими операционными системами?

2.Покажите назначение основных аппаратных компонентов электронно- вычислительной системы и их связь с командным интерпретатором ОС Linux.

3.Назначение командного интерпретатора. Перечислите командные интерпретаторы ОС Linux. Покажите их отличия друг от друга.

4.Дайте определения следующим терминам: команда, опция, параметр.

5.Перечислите общие и групповые символы. Приведите примеры использования общих и групповых символов. Как их можно применять в повседневной работе разработчика?

6.Дайте определения терминам: стандартный поток ввода; стандартный поток вывода; стандартный поток вывода об ошибках.

7.Дайте определение программного канала. В чем заключается его назначение? Приведите примеры.

8.Перечислите известные вам команды. Приведите примеры.

48

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. Работа в файловой системе ОС Linux

3.1. Особенности файловой системы

Основным отличием ОС Linux от операционных систем семейства Windows является качественно другой тип организации файловой системы. Если в ОС Windows пользователь имеет дело с дисковой файловой системой, т.е. обращается к логическим дискам C, D, E… и использует типы файловых систем, такие как FAT16, FAT32, NTFS, то в операционных системах UNIX-семейства, в том числе в Linux, нет логических дисков. Организация файловой системы в Linux построена на разграничении так называемых партиций (partitions) – частей общего пространства жесткого диска (винчестера), обращение к данным на которых возможно путем выбора назначенного каталога файловой системы, при этом типами файловых систем являются EXT2 и EXT3. Различие между

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

Файловая структура Linux представляет собой корневой и некоторые другие разделы, на которых организованы различные каталоги с ОФС. Каждый из каталогов предназначен в основном для хранения файлов и подкаталогов, зарезервированных операционной системой. Корневой каталог обозначается символом «/» и служит отправной точкой при обращении к любым ОФС. Основными каталогами файловой структуры являются: /home (содержит начальные каталоги пользователей); /bin (содержит все стандартные команды и утилиты); /usr (содержит файлы и команды, используемые системой, разбит на несколько подкаталогов); /usr/bin (содержит команды и утилиты, применяемые пользователем); /usr/sbin (содержит команды системного администрирования); /usr/lib (содержит библиотеки языков программирования); /usr/doc (содержит документацию ОС Linux); /usr/man (содержит файлы справочных руководств); /usr/spool (содержит буферные файлы, например, создаваемые для заданий печати и пересылок по сети); /sbin (содержит команды администрирования системы для начальной загрузки); /var (содержит изменяющиеся файлы, например файлы почтовых ящиков); /dev (содержит файлы, обеспечивающие взаимодействие пользователя с устройствами, например с терминалами и принтерами); /etc (содержит файлы конфигурации системы и прочие системные файлы) и т.д.

49

PDF created with pdfFactory Pro trial version www.pdffactory.com

3.2. Cоглашение по именованию файлов и каталогов

При создании файлов и каталогов существуют определенные правила, которые регламентируются соглашением по именованию файлов и каталогов:

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

специальные символы, такие как звездочка (*), амперсанд (&), конвейер (|), кавычки (“«) и знак доллара ($), использовать не следует. Эти символы имеют специальное значение для командного интерпретатора;

пробелы также не следует использовать в именах каталогов и файлов;

имена файлов и каталогов, как правило, не содержат расширений, но при необходимости использовать их можно.

3.3. Вывод информации о типах файлов

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

Из рис. 3.1 видно, что файл new_command относится к числу обычных файлов. Количество ссылок равно 1; это значит, что файл не имеет других имен и на него нет других ссылок. Имя владельца и имя группы antonk совпадают с регистрационными именем и группой. В группу antonk входят и другие пользователи. Размер файла – 18 байтов. Файл был создан или обновлялся последний раз 21 сентября, в 18:20. Имя файла – new_command.

50

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в папке LINUX