355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Уильям Шоттс » Командная строка Linux » Текст книги (страница 2)
Командная строка Linux
  • Текст добавлен: 12 апреля 2017, 12:30

Текст книги "Командная строка Linux"


Автор книги: Уильям Шоттс


Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 2 (всего у книги 30 страниц)

2. Навигация

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

• pwd – выводит название текущего рабочего каталога.

• cd – выполняет переход в другой каталог.

• ls – выводит список содержимого каталога.

Дерево каталогов файловой системы

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

Обратите внимание, что в отличие от Windows, где для каждого устройства хранения создается отдельная файловая система, в Unix-подобных системах, таких как Linux, всегда имеется только одна файловая система, независимо от числа приводов или устройств хранения, подключенных к компьютеру. Устройства хранения подключаются (или, как принято говорить, монтируются) к разным точкам дерева в соответствии с желанием системного администратора, человека (или нескольких человек), ответственного за обслуживание системы.

Текущий рабочий каталог

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

Рис. 2.1. Дерево каталогов файловой системы в диспетчере файлов с графическим интерфейсом

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

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

[me@linuxbox ~]$ pwd

/home/me

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

Перечисление содержимого каталога

Чтобы вывести список файлов и каталогов в текущем рабочем каталоге, воспользуйтесь командой ls:

[me@linuxbox ~]$ ls

Desktop  Documents  Music  Pictures  Public  Templates  Videos

В действительности командой ls можно вывести содержимое любого, не только текущего, рабочего каталога, а также получить массу дополнительной любопытной информации, но об этом мы поговорим в главе 3.

Смена текущего рабочего каталога

Чтобы сменить рабочий каталог (в котором мы находимся в середине древовидного лабиринта), можно воспользоваться командой cd: введите cd и добавьте путь к желаемому рабочему каталогу. Путь (pathname) – это маршрут, перечисляющий ветви дерева, по которым нужно пройти, чтобы достигнуть желаемого каталога. Пути могут определяться двумя способами: как абсолютные или как относительные. Рассмотрим сначала абсолютные пути.

Абсолютные пути

Абсолютный путь начинается с корневого каталога и перечисляет ветви дерева, отделяющие корень от желаемого каталога или файла. Например, в системе имеется каталог, в который устанавливается большинство программ. Путь к этому каталогу имеет вид: /usr/bin. То есть в корневом каталоге (представлен первым символом слеша в пути) имеется каталог с названием usr, содержащий каталог с названием bin.

[me@linuxbox ~]$ cd /usr/bin

[me@linuxbox bin]$ pwd

/usr/bin

[me@linuxbox bin]$ ls

...Длинный, очень длинный список файлов...

Как видите, мы сменили текущий рабочий каталог на /usr/bin, и он полон файлов. Обратите внимание, как изменилось приглашение командной оболочки к вводу. Для удобства оно обычно настраивается так, чтобы автоматически показывать название рабочего каталога.

Относительные пути

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

Символ . (точка) обозначает рабочий каталог, а символ .. (точка-точка) обозначает каталог, родительский по отношению к рабочему. Ниже показано, как ими пользоваться. Давайте снова сменим рабочий каталог на /usr/bin:

[me@linuxbox ~]$ cd /usr/bin

[me@linuxbox bin]$ pwd

/usr/bin

Отлично, а теперь допустим, что мы хотим сменить рабочий каталог на родительский для каталога /usr/bin, которым является /usr. Сделать это можно двумя способами: пойти либо по абсолютному пути:

[me@linuxbox bin]$ cd /usr

[me@linuxbox usr]$ pwd

/usr

либо по относительному:

[me@linuxbox bin]$ cd ..

[me@linuxbox usr]$ pwd

/usr

Два разных способа дают идентичные результаты. И каким же лучше пользоваться? Конечно, тем, который требует нажимать меньше клавиш!

Аналогично, существуют два способа сменить рабочий каталог с /usr на /usr/bin. Абсолютный путь:

[me@linuxbox usr]$ cd /usr/bin

[me@linuxbox bin]$ pwd

/usr/bin

Относительный путь:

[me@linuxbox usr]$ cd ./bin

[me@linuxbox bin]$ pwd

/usr/bin

А теперь я хочу сделать важное замечание. Практически во всех случаях можно опустить пару символов ./, потому что они подразумеваются по умолчанию.

Ввод

[me@linuxbox usr]$ cd bin

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

Некоторые полезные сокращения

В табл. 2.1 перечислены некоторые способы быстрой смены рабочего каталога.

Таблица 2.1. Сокращенные варианты команды cd

Сокращение

Результат

cd

Сменить рабочий каталог на домашний

cd -

Сменить рабочий каталог на предыдущий рабочий каталог

cd ~username

Сменить рабочий каталог на домашний каталог пользователя username. Например, cd ~bob выполнит переход в домашний каталог пользователя bob

ЧТО СЛЕДУЕТ ЗНАТЬ об именах файлов

• Файлы, имена которых начинаются с точки, считаются скрытыми. Это означает, что команда ls не будет выводить их, если не вызвать ее с параметром: ls -a. В момент создания учетной записи пользователя в его домашний каталог помещается несколько скрытых файлов, где хранятся различные параметры настройки учетной записи. Далее в этой книге мы еще вернемся к подобным файлам и посмотрим, как можно настроить свое окружение. Кроме того, некоторые приложения помещают в домашний каталог свои скрытые файлы с настройками.

• Linux, как это принято в Unix, различает регистр символов в именах файлов и командах. Файлы с именами File1 и file1 – это разные файлы.

• В Linux не поддерживается понятие «расширения файла», как в некоторых других операционных системах. Вы можете давать своим файлам любые имена. Тип и/или назначение файла определяется другими средствами. Но даже при том, что Unix-подобные операционные системы не используют расширения файлов для определения типа/назначения файлов, некоторые прикладные программы все же используют их для этой цели.

• Хотя Linux поддерживает длинные имена файлов с пробелами и знаками пунктуации, старайтесь не использовать в именах файлов другие знаки пунктуации, кроме точки, дефиса и подчеркивания. Также не используйте пробелы в именах файлов. Наличие пробелов в именах файлов осложняет решение многих задач командной строки – вы это увидите в главе 7. Если необходимо отделить друг от друга слова в имени файла, используйте символы подчеркивания. Потом вы не раз скажете себе спасибо за это.

3. Исследование системы

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

• ls – выводит список содержимого каталога.

• file – определяет тип файла.

• less – выводит содержимое файла.

Любопытные возможности ls

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

[me@linuxbox ~]$ ls

Desktop  Documents  Music  Pictures  Public  Templates  Videos

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

me@linuxbox ~]$ ls /usr

bin  games    kerberos  libexec  sbin   src

etc  include  lib       local    share  tmp

и даже несколько каталогов. Следующий пример выведет содержимое домашнего каталога пользователя (обозначен символом ~) и каталога /usr:

[me@linuxbox ~]$ ls ~ /usr

/home/me:

Desktop  Documents  Music  Pictures  Public  Templates  Videos

/usr:

bin  games    kerberos  libexec  sbin   src

etc  include  lib       local    share  tmp

Можно также изменить формат вывода, чтобы получить больше информации:

[me@linuxbox ~]$ ls -l

total 56

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Desktop

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Documents

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Music

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Pictures

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Public

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Templates

drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Videos

Параметр -l, добавленный в команду, требует использования «длинного» (long) формата вывода.

Параметры и аргументы

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

команда -параметры аргументы

Большинство команд используют параметры, состоящие из одного символа, которому предшествует дефис, например: -l. Но многие команды, в том числе команды из проекта GNU, поддерживают параметры с длинными именами, состоящие из слова, которому предшествуют два дефиса. Кроме того, многие команды позволяют объединять вместе параметры с короткими именами. В следующем примере команде ls передаются два параметра: параметр l, требующий использовать длинный (long) формат вывода, и параметр t, требующий сортировать результаты по времени (time) изменения:

[me@linuxbox ~]$ ls -lt

Добавим параметр с длинным именем –reverse, чтобы изменить порядок сортировки на обратный:

[me@linuxbox ~]$ ls -lt –reverse

Команда ls имеет огромное число допустимых параметров. Наиболее популярные из них перечислены в табл. 3.1.

Таблица 3.1. Наиболее популярные параметры команды ls

Параметр

Длинный параметр

Описание

–a

–all

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

–d

–directory

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

–F

–classify

Добавляет в конец каждого имени символ-индикатор (например, прямой слеш, если это имя каталога)

–h

–human-readable

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

–l

Выводит результаты с использованием длинного формата

–r

–reverse

Выводит результаты в обратном порядке. Обычно команда ls выводит результаты в алфавитном порядке

–S

Сортировать результаты по размеру (size)

–t

Сортировать результаты по времени (time) последнего изменения

Пристальный взгляд на длинный формат

Как было показано выше, параметр -l заставляет команду ls выводить результаты с использованием длинного формата. Этот формат предусматривает вывод большого количества полезной информации. Ниже приводится пример вывода содержимого каталога Examples в системе Ubuntu:

–rw-r–r– 1 root root 3576296 2012-04-03 11:05 Experience ubuntu.ogg

–rw-r–r– 1 root root 1186219 2012-04-03 11:05 kubuntu-leaflet.png

–rw-r–r– 1 root root   47584 2012-04-03 11:05 logo-Edubuntu.png

–rw-r–r– 1 root root   44355 2012-04-03 11:05 logo-Kubuntu.png

–rw-r–r– 1 root root   34391 2012-04-03 11:05 logo-Ubuntu.png

–rw-r–r– 1 root root   32059 2012-04-03 11:05 oo-cd-cover.odf

–rw-r–r– 1 root root  159744 2012-04-03 11:05 oo-derivatives.doc

–rw-r–r– 1 root root   27837 2012-04-03 11:05 oo-maxwell.odt

–rw-r–r– 1 root root   98816 2012-04-03 11:05 oo-trig.xls

–rw-r–r– 1 root root  453764 2012-04-03 11:05 oo-welcome.odt

–rw-r–r– 1 root root  358374 2012-04-03 11:05 ubuntu Sax.ogg

Рассмотрим различные поля для одного из файлов и их назначение (табл. 3.2).

Таблица 3.2. Поля длинного формата вывода команды ls

Поле

Назначение

–rw-r-r–

Права доступа к файлу. Первый символ указывает тип файла. Например, символом дефиса обозначаются обычные файлы, а символом d – каталоги. Следующие три символа сообщают о правах доступа для владельца файла, следующие три – для членов группы, которой принадлежит файл, и последние три – для всех остальных. Более полное обсуждение прав доступа приводится в главе 9

1

Число жестких ссылок на файл. Подробнее о ссылках рассказывается в конце этой главы

root

Имя пользователя, владеющего файлом

root

Имя группы, владеющей файлом

32059

Размер файла в байтах

2012-04-03 11:05

Дата и время последнего изменения файла

oo-cd-cover.odf

Имя файла

Определение типов файлов командой file

Занимаясь исследованием системы, полезно иметь возможность определять тип содержимого файлов. В этом нам поможет команда file. Как отмечалось выше, имена файлов в Linux не обязаны отражать тип содержимого файлов. Например, увидев имя файла picture.jpg, можно предположить, что он содержит изображение в формате JPEG, но в Linux такие предположения могут не оправдываться. Вызвать команду file можно так:

file имя_файла

Команда file выводит краткое описание содержимого файла. Например:

[me@linuxbox ~]$ file picture.jpg

picture.jpg: JPEG image data, JFIF standard 1.01

Существует множество разных типов файлов. Одна из известных идей в Unix-подобных системах, таких как Linux, гласит: «Все сущее есть файл». По мере чтения книги вы убедитесь в истинности этого утверждения.

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

Просмотр содержимого файлов командой less

Команда less – это программа для просмотра текстовых файлов. В системе Linux присутствует множество файлов, содержащих обычный, удобочитаемый текст. Программа less предоставляет удобный способ исследовать их содержимое.

Зачем может понадобиться исследовать текстовые файлы? Дело в том, что многие файлы с системными настройками (их называют конфигурационными файлами) хранят информацию в этом формате, что дает возможность прочитать их и вникнуть в особенности работы системы. Кроме того, в этом формате хранятся многие программы в системе (их называют сценариями). В последних главах мы узнаем, как редактировать файлы с настройками системы и как писать свои сценарии, а пока просто просматривайте их содержимое.

что есть «текст»

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

Некоторые из этих систем представления очень сложны (например, сжатые видеофайлы), другие, напротив, очень просты. Одна из самых ранних и простых систем называется ASCII-текст. ASCII (произносится «ас-ки») – это аббревиатура названия «American Standard Code for Information Interchange» (американский стандартный код для обмена информацией). Эта простая система кодирования впервые была использована в телетайпах.

Текст – это простое отображение «один в один» символов в числа. Это очень компактный формат. Пятьдесят символов текста преобразуются в пятьдесят байт данных. Но это не то же самое, что текст в документе, созданном текстовым процессором, таким как Microsoft Word или OpenOffice.org Writer. Файлы документов, в отличие от простых файлов с ASCII-текстом, содержат множество нетекстовых элементов, используемых для описания их структуры и форматирования. Файлы с простым ASCII-текстом содержат только сами символы и очень небольшое количество простейших кодов управления, таких как символы табуляции, возврата каретки и перевода строки.

В системе Linux многие файлы хранятся в текстовом формате, и многие инструменты работают с текстовыми файлами. Даже Windows признает важность этого формата. Хорошо известная программа Notepad (Блокнот) – это редактор для простых файлов с ASCII-текстом.

Команда less используется так:

less имя_файла

После запуска программа less позволяет прокручивать текстовый файл взад и вперед. Например, просмотреть содержимое файла со всеми известными системе учетными записями пользователей можно с помощью следующей команды:

[me@linuxbox ~]$ less /etc/passwd

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

В табл. 3.3 перечислены клавиатурные команды, наиболее часто используемые в программе less.

Таблица 3.3. Команды программы less

Команда

Действие

Page Up или b

Прокрутка к началу на одну страницу

Page Down или ПРОБЕЛ

Прокрутка к концу на одну страницу

СТРЕЛКА ВВЕРХ

Прокрутка к началу на одну строку

СТРЕЛКА ВНИЗ

Прокрутка к концу на одну строку

G

Переход в конец текстового файла

1G или g

Переход в начало текстового файла

/символы

Поиск вниз по тексту до ближайшего вхождения указанной последовательности символов

n

Поиск следующего вхождения искомой последовательности символов

h

Вывод экрана со справкой

q

Завершить less

меньше значит больше

Программа less создавалась как улучшенная замена более ранней Unix-программы с именем more. Ее имя – это игра слов «less is more» (меньше значит больше) – девиз архитекторов-модернистов и проектировщиков.

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

Обзорное путешествие

Файловая система в Linux имеет практически ту же компоновку, что и в других Unix-подобных системах. Фактически ее структура определяется опубликованным стандартом с названием «Linux Filesystem Hierarchy Standard». Не все дистрибутивы Linux следуют этому стандарту, но большинство придерживаются его достаточно близко.

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

1. С помощью команды cd перейдите в указанный каталог.

2. Выведите содержимое каталога командой ls -l.

3. Если увидите заинтересовавший вас файл, определите его тип командой file.

4. Если файл выглядит как текстовый, попробуйте просмотреть его командой less.

ПРИМЕЧАНИЕ

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

В ходе путешествия не бойтесь заглядывать внутрь системы. Обычные пользователи практически ничего не смогут испортить. Это работа системного администратора! Если команда пожалуется на что-то, просто перейдите к чему-нибудь другому. Потратьте некоторое время на знакомство с окрестностями. Это наша система, и мы вправе заниматься ее исследованием. Помните, что в Linux нет секретов!

В табл. 3.4 перечислены несколько каталогов для исследования. Но вы можете заняться исследованием любых других каталогов!

Таблица 3.4. Каталоги в системе Linux

Каталог

Описание

/

Корневой каталог, откуда все начинается

/bin

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

/boot

Содержит ядро Linux, образ начального RAM-диска (с драйверами, необходимыми на этапе загрузки) и сам загрузчик.

Интересные файлы:

/boot/grub/grub.conf или menu.lst, используются для настройки загрузчика

/boot/vmlinuz, ядро Linux

/dev

Специальный каталог, содержащий узлы устройств. «Все сущее есть файл» применяется также к устройствам. Здесь ядро хранит список всех известных ему устройств

/etc

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

Интересные файлы: в /etc все интересно, но, на мой взгляд, особенный интерес представляют:

/etc/crontab, файл, определяющий время запуска автоматизированных заданий;

/etc/fstab, таблица устройств хранения и соответствующих им точек монтирования;

/etc/passwd, список всех учетных записей пользователей

/home

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

/lib

Содержит файлы разделяемых библиотек, используемых основными системными программами. Они напоминают библиотеки DLL в Windows

/lost+found

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

/media

В современных системах Linux каталог /media будет содержать точки монтирования съемных носителей, таких как USB-диски, CD-ROM и т.д., которые монтируются в момент подключения

/mnt

В старых системах Linux каталог /mnt содержал точки монтирования съемных носителей, монтируемых вручную

/opt

Каталог /opt используется для установки «необязательного» (optional) программного обеспечения. В основном используется для установки коммерческого программного обеспечения

/proc

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

/root

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

/sbin

Каталог содержит системные двоичные файлы (system binaries). Эти программы выполняют жизненно важные задачи и обычно запускаются только суперпользователем

/tmp

Каталог /tmp играет роль временного хранилища для временных файлов, создаваемых разными программами. В некоторых конфигурациях этот каталог принудительно очищается при каждой перезагрузке системы

/usr

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

/usr/bin

Каталог /usr/bin содержит выполняемые программы, установленные дистрибутивом Linux. Очень часто в этом каталоге хранятся тысячи программ

/usr/lib

Содержит разделяемые библиотеки для программ в /usr/bin

/usr/local

Дерево каталогов /usr/local используется для установки тех программ, которые не входят в состав дистрибутива, но должны быть доступны всем пользователям в системе. Программы, собираемые из исходных текстов, обычно устанавливаются в /usr/local/bin. В новейших версиях системы Linux это дерево каталогов присутствует, но остается пустым, пока системный администратор не добавит туда что-нибудь

/usr/sbin

Содержит дополнительные программы для администрирования

/usr/share

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

/usr/share/doc

Большинство пакетов, установленных в системе, содержат документацию. Вся эта документация, организованная по пакетам, хранится в каталоге /usr/share/doc

/var

За исключением /tmp и /home, все упоминавшиеся выше каталоги остаются относительно статичными; то есть их содержимое почти не меняется. Дерево каталогов /var – как раз то место, где хранятся часто изменяемые данные: различные базы данных, буферные файлы, почта пользователей и пр.

/var/log

Каталог /var/log содержит файлы журналов с записями о различных действиях, выполнявшихся в системе. Они очень важны и должны проверяться время от времени. Наиболее полезным является файл /var/log/messages. Обратите внимание, что из соображений безопасности некоторые системы требуют привилегий суперпользователя для просмотра файлов журналов

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

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

lrwxrwxrwx 1 root root 11 2012-08-11 07:34 libc.so.6 -> libc-2.6.so

Обратили внимание на первую букву l и на присутствие двух имен файлов в конце? Это специальный файл, который называется символической ссылкой (иногда их называют мягкими ссылками или, на жаргоне, симлинками). В большинстве Unix-подобных систем можно дать одному и тому же файлу несколько имен. Даже при том, что на данный момент ценность такого приема может быть не очевидна, в действительности это очень удобная возможность.

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

Символические ссылки помогут спасти положение. Допустим, мы установили foo версии 2.6 с именем файла foo-2.6 и затем создали символическую ссылку с простым именем foo, указывающую на ресурс foo-2.6. То есть когда программа откроет файл foo, в действительности она откроет файл foo-2.6. И все будут счастливы. Программы, полагающиеся на имя foo, найдут нужный файл, а мы сможем увидеть фактическую версию ресурса. Когда придет время обновить ресурс до версии foo-2.7, мы просто добавим файл в систему, удалим символическую ссылку foo и создадим новую символическую ссылку, указывающую на новую версию. Такой подход не только решает проблему обновления версий, но также позволяет сохранить на компьютере обе версии ресурса. Представьте, что в версии foo-2.7 обнаружилась ошибка (ох уж эти разработчики!) и нужно вернуть старую версию. В этом случае достаточно просто вновь удалить символическую ссылку, указывающую на новую версию, и создать новую символическую ссылку, указывающую на старую версию.

Запись выше (получена в каталоге /lib в системе Fedora) соответствует символической ссылке с именем libc.so.6, указывающей на файл разделяемой библиотеки с именем libc-2.6.so. Это означает, что программа, ищущая libc.so.6, фактически получит файл libc-2.6.so. Как создавать символические ссылки, мы узнаем в следующей главе.

жесткие ссылки

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


    Ваша оценка произведения:

Популярные книги за неделю