Интересные файлы:
/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). Жесткие ссылки так же позволяют присвоить одному файлу несколько имен, но они действуют иначе. Подробнее о различиях между жесткими и символическими ссылками рассказывается в следующей главе.
4. Операции с файлами и каталогами
Теперь мы готовы приступить к настоящей работе! В этой главе будут представлены следующие команды:
• cp — копирует файлы и каталоги.
• mv — перемещает/переименовывает файлы и каталоги.
• mkdir — создает каталоги.
• rm — удаляет файлы и каталоги.
• ln — создает жесткие и символические ссылки.
Эти пять команд относятся к числу наиболее часто используемых в Linux. Они применяются для управления файлами и каталогами.
Справедливости ради следует заметить, что некоторые задачи, выполняемые этими командами, гораздо проще решаются с помощью графического диспетчера файлов. В диспетчере файлов можно мышью перетаскивать файлы из одного каталога в другой, вырезать и вставлять файлы, удалять файлы и т.д. Но зачем тогда использовать эти старые программы командной строки?