su13@pochta.ru

| Первый | Второй | Третий | Четвёртый | Пятый | Шестой | Седьмой |


Глава 5

Как управиться со своими данными



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

Что такое контент, о котором столько говорилось (и будет говориться) в этой книге? Это, в первую очередь, файлы, файлы и еще раз файлы, создаваемые соответствующими программами — генераторами оригинального авторского материала.

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

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

Но сначала несколько слов о файловой системе.

Что нужно знать о файловой системе Linux

Подразумевается — что нужно знать простому, хотя и считающему себя профессионалом, пользователю. И потому особых подробностей здесь не ищите:

их можно обнаружить в толстых книгах про Linux или в замечательной статье Виктора Хименко "Файлы, файлы, файлы" (Мир ПК, 2000, ##2, 3).

А пользователю нужно в первую очередь осознать отличия файловой системы Linux от привычных систем DOS и Windows.

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

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

Обычные файлы — это, во-первых, исполняемые двоичные файлы (типа файлов ехе или сот, но не привязанные к какому-либо расширению); во-вторых, ASCII-файлы, содержащие простой текст (не обязательно романического содержания — сюда относится и подавляющее большинство системных конфигурационных файлов); в-третьих, файлы данных, созданные какой-либо программой (текстовым процессором, графическим редактором или электронной таблицей, например) в собственном формате. Впрочем, все это пользователю DOS/Windows понятно.

Каталоги — это тоже файлы, содержащие информацию о каталогах: рекурсия — широко распространенный и любимый прием в мире Unix-систем (достаточно вспомнить расшифровку аббревиатуры проекта GNU — GNU'S Not Unix). Каталоги объединяются в иерархическое дерево, начинающееся, как и положено, с корня (/ — root, корневой каталог) и растущее ввысь и вширь; любые накопители, как монтируемые при загрузке (жесткие диски, скажем, и их логические разделы), так и подключаемые в процессе работы (CD ROM, Zip, дискеты) — не более чем ветви дерева каталогов.

Файлы устройств — понятие для Windows-мигранта непривычное. Это нужно просто запомнить: все физические устройства, присутствующие в системе (порты ввода/вывода, накопители разного рода, звуковые устройства и прочие), с точки зрения ext2fs являются файлами. Устройства эти могут быть блочными (например, накопители) или символьными (порты ввода/вывода), но это — уже подробности.

Наконец, ссылки (links) — это некий (но отдаленный, прямая параллель здесь неуместна) аналог ярлыков в Windows или теней в OS/2. Ссылка может быть прямой, или жесткой (hardlink или, часто просто, link), и символической (symlink). Первые могут указывать на любой файл в файловой системы, тогда как вторые обязаны находиться в одном дисковом разделе.

Чтобы лучше понять, что такое ссылки, давайте попробуем разобраться, что же такое с точки зрения файл ext2fs (не могу не отметить, что для себя я окончательно понял это после прочтения упомянутой статьи Виктора Хи-менко).

Так вот, файл состоит как бы из двух частей. Первая — это нумерованная в шестнадцатеричном исчислении запись — inode (адекватного перевода мне обнаружить не удалось, иногда переводится как "узел"). В ней содержится информация о размере файла, его формате, правах доступа и т. д. Вторая часть — это имя файла, связанное с inode посредством прямой ссылки.

Каковы следствия этого для конечного пользователя? Первое — имя файла, включая и расширение, не играет в Linux такой сакральной роли, как в DOS/Windows. Если в последней сменить расширение файла, скажем, psd на любое иное — открыть такой файл в Photoshop просто щелчком на его имени уже не удастся. В Linux же в общем случае файлу данных любого типа может быть присвоено любое расширение (или его может не быть, вовсе): на понимание его породившей программой это никак не отразится. Более того, файл может иметь несколько расширений (то есть групп знаков, разделенных точками): типичный пример — архивный сжатый файл .tar.gz.

Правда, некоторые программы (скажем, графические редакторы или офисные пакеты) все же требуют, чтобы файл формата TIFF имел расширение tif, и т. д. Но это — извращение генеральной линии. И вызывается тем, что имя файла неявно передается программе, то есть запускающей ее команде, в качестве одного из аргументов.

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

Следствие третье — удаление файлов в Linux происходит совершенно иначе, чем в DOS/Windows. Где, как известно, удаленный обычными средствами файл продолжает физически существовать до тех пор, пока на его место не записана новая информация. На чем и основаны программы восстановления ошибочно удаленных данных, вроде прославившей Питера Нортона утилиты unerase.

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

Таким образом, если мы удалим все файлы во всех каталогах всех уровней вложенности (а средства командной строки дают возможность сделать это играючи и даже подтверждения не запросят) — мы будем по прежнему существовать в работающей системе. И все открытые файлы данных будут существовать и смогут быть изменены, записаны, переименованы и т. д. Все это исчезнет только после перезагрузки системы. Но зато — безвозвратно: никакие либеральности unerase, undelete и прочих программ в Linux не возможны в принципе.

Правда, такая графическая среда, как KDE, имеет аналог мусорной корзины Windows. Но это просто отдельный каталог, куда помещаются файлы, полагаемые ненужными, чтобы глаза не мозолили. И откуда их можно даже не восстановить в смысле DOS, а просто скопировать обратно.

Возвращаясь к имени файла. Поскольку оно в Linux не столь свято, как в DOS/Windows, и ограничений на него много меньше. Так, абсолютно запрещенные к использованию символы — только / и \. Правда, некоторые другие специальные символы, такие, как !, @ и прочие из верхнего ряда клавиатуры, за исключением _, всякого рода скобки и кавычки, также не рекомендуются к использованию в именах файлов, особенно — в начальной позиции, но это, обычно, требование оболочки командной строки, а не системы.

Максимальная длина имени файла (включая и любое количество "расширений") — 255 знаков. А максимально возможная длина пути — 4096, что практически можно считать бесконечным. В отличие от Windows, где при стремлении программ инсталлироваться глубоко в недра каталога Program Files, ограничение на длину полного имени файла в 260 знаков становится реальностью.

А вот структура каталогов в Linux, напротив, жестко фиксирована, хотя в деталях и может разниться от дистрибутива к дистрибутиву. Конечно, обладая правами суперпользователя, ее можно изменить. Но делать это ни в коем случае не следует — в результате система может просто утратить работоспособность.

Как правило, после инсталляции системы в корневом (/root) каталоге присутствуют:

D /bin — каталог для исполнимых (иначе называемых бинарными, binary) файлов общего назначения; здесь помещаются оболочки командной строки, общие команды управления файлами и их архивации, традиционные текстовые редакторы типа vi, и т. д.; именно каталог /bin в первую очередь просматривается на предмет поиска введенной с клавиатуры команды;
/boot, как явствует из названия, содержит файл образа ядра, с которого загружается система;
/dev — каталог для файлов устройств;
/etc — каталог для конфигурационных файлов общего пользования;
/home включает в себя домашние каталоги пользователей, со всеми их программами, личными конфигурационными файлами (имеющими в сеансе этого пользователя предпочтение перед общими файлами конфигурации) и данными;
/lib — каталог для общесистемных библиотек (аналогов dll в Windows);
/mnt — каталог для монтирования сменных накопителей (вроде дискет) или временно подключаемых файловых систем (например, FAT-раздела диска);
/proc — виртуальная файловая система для чтения информации о процессах;
/root — аналог $НОМЕ для суперпользователя;
/sbin содержит системные двоичные файлы, используемые для системного администрирования;
/tmp, понятно, включает в себя всякого рода временные файлы; как правило, этот каталог автоматически очищается при перезагрузке или через некоторое время;
/usr — каталог для прикладных пользовательских программ со всеми их компонентами — исполнимыми, конфигурационными и разделяемыми файлами (/usr/bin, /usr/etc и /usr/share соответственно), библиотеками (/usr/lib), документацией в различных форматах (/usr/doc, /usr/man) и т. д.; важный подкаталог /usr/local предназначен для программ, не входящих в дистрибутив стандартно — сюда по умолчанию инсталлируются компилируемые из исходных текстов приложения;
/var — каталог для варьирующих файлов, всякого рода системных журналов, почтовых и принтерных спуллингов и т. д.

Кроме того, в дереве могут присутствовать и некоторые другие каталоги, например, /opt — для опциональных компонентов, или /misc — для всего, что не подпадает под приведенные определения.

В общем, назначение каталогов и логика их организации понятна, если затратить некоторое время на изучение их содержимого. Трудности, скорее всего, могут возникнуть с каталогом /mnt, поскольку ни DOS, ни Windows не имеют даже отдаленных аналогов этого понятия.

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

Разделы жесткого диска с файловой системой ext2fs обычно монтируются автоматически, при загрузке системы. Часто так же поступают и с FAT-разделами. А в Linux Mandrake (и некоторых других дистрибутивах) предусмотрено автоматическое монтирование и для сменных накопителей — дискет и CD ROM. Вот под них-то и отведен каталог /mnt.

А вообще, что и как монтируется — описано в конфигурационном файле /etc/fstab, в котором в каждой строке указывается (слева направо) имя устройства, точка его монтирования, тип файловой системы, условия монтирования (по умолчанию, автоматическое, пользователем и т. д.) и параметры резервного копирования. Файл этот может выглядеть примерно так:

/dev/hdal /mnt/DOS_hdal vfat user,exec,conv=auto 0 0

/dev/hda2 / ext2 defaults 1 1

/dev/hda3 swap swap defaults 0 0

/dev/hda4 /home ext2 defaults 1 2

/mnt/floppy /mnt/floppy super-mount fs=vfat,dev=/dev/fd0 0 0

none /proc proc defaults 0 0

none /dev/pts devpts mode=0620 0 0

/innt/cdrom /imit/cdrom supermount fs=iso9660,devs/dev/cdromi 0 0

Из чего можно видеть, что в приведенном примере все разделы ex2fs, раздел подкачки и FAT-раздел монтируются по умолчанию, а для сменных носителей предусмотрена опция supermount, то есть монтирования при обращении и размонтирования — при прекращении его.

Если такая опция не поддерживается, сменные носители требуется монтировать вручную. Для этого дается команда mount с именем устройства и точкой монтирования в качестве аргументов. Например, с помощью

mount /dev/hdc /mnt/cdrom

монтируется CD ROM, подключенный в качестве мастера ко второму каналу IDE; содержимое его после этого можно будет увидеть в каталоге /mnt/cdrom. А перед извлечением сменного носителя (во избежание тяжких последствий, о которых — в разделе техники безопасности), его следует размонтировать командой umount (обращаю внимание — без буквы п, вопреки логике) с точкой монтирования в качестве аргумента. Разумеется, при этом обращений к файлам на носителе быть не должно.

В общем случае монтирование и размонтирование устройства требует прав администратора. Но последний может разрешить эту операцию и пользователям. Для этого в файле fstab в каждой из строчек, соответствующих устройству, к которому предполагается непосредственный доступ пользователя, в четвертой позиции нужно добавить user, например, для CD ROM примерно таким образом:

/dev/hdcl /mnt/cdrom iso9660 user 0 О

Однако для пользователя наиболее важен каталог /usr (кроме его домашнего, разумеется). Если просмотреть его внимательно, можно обнаружить в нем многочисленные повторения. Например, каталоги /usr/XllR6/bin и /usr/bin/Xll кажутся идентичными по содержанию, так же как /usr/XllR6/lib/Xll и /usr/lib/Xll. Возникает естественное желание стереть излишки для освобождения дискового пространства.

Делать этого не нужно: система не дура, и ничего в ней не происходит зря. Поскольку содержимое /usr/XllR6/bin и /usr/XllR6/lib/Xll — не более, чем символические ссылки на файлы из соответствующих разделов каталогов /usr/bin и /usr/lib. Почему?

Linux, как говорилось во Введении — Unix-подобная система, то есть полный функциональный аналог Unix. И, теоретически рассуждая, любая программа для любой версии Unix должна работать и в Linux. В чем часто (хотя и не всегда) можно убедиться на практике, если скомпилировать эту программу из исходных текстов. Так вот, Unix-системы имеют несколько различающиеся структуры каталогов. И, соответственно, пытаются искать необходимые им компоненты (вроде библиотек, шрифтов и прочего) по различным путям. Чтобы предусмотреть это, такие компоненты и дублируются в виде ссылок везде, где в этом может возникнуть необходимость.

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

Именно понятие прав доступа вызывает наибольшие психологические сложности у Windows-мигранта. Обычный случай — только что самолично созданный или скопированный файл не удается открыть, удалить или переместить, — способен довести до тихого бешенства. Если не догадаться посмотреть в свойства файла или каталога и с удивлением узнать, что вы не имеете в отношении него соответствующих прав.

А права эти умеют быть двух родов — права принадлежности и права действия. Первые определяются для владельца файла (owner), группы пользователей (group) и всех прочих (other). В отношении же действия существуют права на чтение (read), изменение (или запись, write) и исполнение (execute).

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

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

Наконец, кто такие прочие — это ясно. Они обычно имеют право (и могут) прочитать файл, но не изменить или выполнить его.

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

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

Впрочем, вы всегда в состоянии поменять ситуацию на обратную. Для этого не нужно даже завершать свой пользовательский сеанс и начинать новый, от лица суперпользователя. Достаточно в консоли или окне терминала набрать в командной строке команду su (аббревиатура понятна? — это тот же superuser) и ввести пароль администратора: на некое время вы выступите в его качестве. Ну а после завершения всех потребных действий не забудьте вернуться в обычный пользовательский режим командой exit.

Так что если вам вдруг захотелось послушать музыку, запустив собственноручно сделанный файл mpeg, а в ответ вы получаете сообщение, что права такого не имеете (permission denied) — не нужно поминать родных создателей Linux, а следует внимательно просмотреть каталог /dev на предмет прав доступа к аудиоустройствам, владельцем которых является суперпользователь: возможно, прочие просто не имеют прав исполнения для соответствующих файлов. Выполните целительное действо, описанное в предыдущем абзаце — и наслаждайтесь музыкой в свое удовольствие.

Надеюсь, что с правами доступа к вновь созданным файлам все более или менее ясно. Несколько сложнее — с правами на файлы скопированные. Обычно вы являетесь владельцем всех файлов, расположенных в вашем домашнем каталоге по адресу /поте/ваше_имя, сокращенно обозначаемому в оболочке bash как $НОМЕ. И, соответственно, располагаете в отношении их всеми правами. Но бывают и исключения.

Например, вы могли скопировать некие файлы в каталог $НОМЕ в то время, когда по каким-либо причинам исполняли роль суперпользователя. В этом случае последний автоматически будет назначен их владельцем, со всеми вытекающими последствиями (лишняя причина никогда не проводить от его лица никаких обычных действий).

Во-вторых, ваши права ущемляются при копировании файлов с компакт-диска. В DOS/Windows, как вы помните, такие файлы автоматически получают атрибут "read only". В Linux же на них по умолчанию устанавливается запрет на запись для всех, включая и владельца.

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

Наконец, при копировании с носителя файловой системы FAT (дискового раздела, сменного винчестера, дискеты или Zip) наследуются атрибуты исходных файлов: если последние были помечены как "read only", целевые файлы будут автоматически закрыты для записи, в том числе и для их нового владельца.

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

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

Требования к файловому менеджеру

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

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

Для файловых менеджеров на платформе Linux (как и Unix вообще) необходимое условие — эффективное управление правами доступа — смены владельца и группы, разрешение/запрещение на чтение/запись/исполнение и т. д. И желательно, чтобы эту операцию можно было бы осуществлять рекурсивно, включая подкаталоги любого уровня вложенности и содержащиеся в них файлы.

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

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

Из роскошного хотелось бы иметь встроенный ftp-клиент или возможность подключения внешнего. Также желательно наличие программ для просмотра файлов наиболее распространенных текстовых и графических форматов, Ну и элементарное редактирование текстовых файлов встроенными или подключаемыми средствами — их наличие стало традицией со времен "командира Нортона".

С точки зрения интерфейса все файловые менеджеры можно разделить на две группы — командирского стиля (a la Norton Commander) и Explorer-образные. Какая лучше — однозначно ответить нельзя, определяется сугубо личными привычками и предпочтениями. Мне больше нравится первый, хотя знаю немало людей, у которых вид двух панелей вызывает приступ аллергии. Чрезвычайно ловко, однако, управляющихся с баобабоподобными древами Explorer. Так что, вероятно, "мамы всякие нужны, мамы всякие важны". Лишь бы реализовано было хорошо.

Вот с этих позиций я постараюсь рассмотреть несколько файловых менеджеров, с которыми мне довелось пообщаться. Начну со второй группы, поскольку с появлением Windows стиль Explorer стал традиционным для графических сред. А так как нашей первой графической средой в Linux будет, скорее всего, K.DE, первыми в этом ряду по справедливости должны стоять штатные средства КОЕ для работы с файлами.

Средства среды КDЕ для работы с файлами

Таковых — несколько, но основным является KFM.

Файловый менеджер KFM

KFM — -неотъемлемый компонент интегрированной графической среды KDE. Это достаточно точное подобие своего прототипа, Windows Explorer. Он может выступать в однооконном или двухоконном виде

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

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

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

Переименование выполняется через контекстное меню (пункт Свойства, где в панели на закладке Основные просто вписывается новое имя). Здесь же — управление правами доступа, возможное, однако, только для единичного файла или каталога, без рекурсии.

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

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

И вообще, настроек (в пункте меню Настройки ¦ Настроить менеджер файлов) довольно много. Можно определить гарнитуру шрифта (любую доступную в системе) и его размер (маленький, средний, большой). Можно переопределить цвет фона, нормального текста и гиперссылки (в качестве каковых выступают каталоги и файлы). Можно также отключить следование дерева каталогов (если включен его показ) за движением курсора в окне содержимого каталогов: это удобно для копирования из каталога в каталог методом перетаскивания: файл или их группа (выделяемая стандартным для Windows способом — мышью при нажатой клвише <Ctrl>) перетаскивается из окна файлов в один из подкаталогов окна в дереве.

Из дополнительных функций следует отметить встроенный браузер, простенький, но почти полнофункциональный и работающий замечательно быстро. Следует сказать, что браузер вызывается по умолчанию при открытии каталога, содержащего файлы htm и html. Чтобы этого не было, следует в главном меню (пункт Вид) отключить опцию Вид HTML. Браузер этот не очень уверенно обращается с фреймами и JavaScript, категорически не понимает каскадных стилевых таблиц, не распознает некоторые графические форматы (например, png, не говоря уже о djvu). Однако имеет важное достоинство — позволяет переключать кодировки русского языка.

Из прочих дополнительных средств отмечу также архиватор. Правда, работает он иногда несколько странно: например, благополучно распаковывает файлы tar.gz, но просто на файлы tar реагирует так, как будто и не подозревает о существовании этого формата. Нужно сказать, что и ряд других архивных форматов (bz) также ставят его в недоумение.

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

Ну а при обращении к rpm-пакетам автоматически вызывается Kpackage — весьма удобная в обращении программа для работы с этим форматом, о котором пойдет речь в одном из следующих разделов.

В целом KFM — почти полный функциональный аналог Windows Explorer. И любители последнего не обнаружат в нем ничего непривычного. В качестве основного недостатка (если не считать таковым интерфейс в принципе) можно отметить исключительную медлительность: во время открытия большого каталога можно немалое время наблюдать в строке состояния задумчивую надпись Работаю (по мне — так скорее "Дремлю").

Медлительность эта отнюдь не обусловлена средой KDE, самой по себе не блещущей быстродействием. Поскольку штатный файловый менеджер из грядущей второй версии KDE- (все сказанное выше относилось к первой версии) — Konqueror.

Файловый менеджер Konqueror

Его можно поставить рядом с эталонами скорости.

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

Начать с того, что работает он если не на "порядки", то в "разы" быстрее. Удручающе скучной надписи Работаю или вовсе нет, или ее не успеваешь разглядеть при считывании сколь угодно длинного каталога.

Далее, в нем наконец появилась возможность сортировки: по алфавиту (с чувствительностью к регистру или без оной), по размеру, в обратном порядке. Расширилось число форм представления: в виде текста и пиктограмм различного размера, в виде дерева. Появилась возможность редактирования панели инструментов. Непосредственно из окна Konqueror можно запустить как окно эмуляции терминала, так и миникомандную строку. И самое главное — можно разделить окно на любое количество панелей (по горизонтали или по вертикали) с независимым просмотром.

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

Кроме штатного KFM, в состав KDE, по крайней мере в некоторых поставках (Linux Mandrake RE тому примером) входит еще один файловый менеджер — Kruiser.

Файловый менеджер Kruiser

Он также принадлежит к клану Explorer. Однако существенно (и, на мой взгляд, выгодно) отличается от него интерфейсом.

По умолчанию Kruiser имеет два окна — дерева каталогов (слева) и файлов (справа), главное меню и две инструментальные панели, одну вверху и другую справа (рис. 5.1).

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

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

В главном меню четыре, не считая Help, пункта: File, Edit, View, Tools. Правда, есть еще и пункт Windows, но он пока не активизирован.

В пункте первом — всего три команды: New (каталог или устройство), открытие терминала (xterm) и выход (Exit). В пункте Edit — стандартные манипуляции вырезания, копирования и вставки, удаления просто и перемещения в корзину (как и KFM, Kruiser поддерживает системную корзину KDE), а также выделение.
Рис. 5.1. Файловый менеджер Kruiser

Через пункт View включаются/выключаются инструментальные панели и статусная строка, осуществляется обновление списком и настройка (команда Options). Здесь же переключение вида списка файлов, порядка сортировки (по имени, размеру, типу и дате), включение/выключение показа скрытых файлов и предварительного просмотра. Кроме того, тут же — управление видом окон файлов. В пункте Tools — поиск файлов, монтиро-вание/размонтирование устройств, переход к каталогу.

Немного остановлюсь на настройках. Это окно с закладками General, Extensions, Details, View, Misc. В первой можно определить локализацию MIME-типов и значков, оболочку по умолчанию для вызываемого окна терминала, открываемый по умолчанию каталог (последний или текущий).

С помощью закладки Extensions осуществляется приписывание типам файлов стандартного расширения; ведь в Unix, в отличие от DOS/Windows, расширение в общем случае с типом файла никак не связано и может быть любым.

В закладке Details определяется ширина (в пикселах) для полей отображаемых атрибутов файлов, таких, как размер, тип файла, права доступа и прочее.

В закладке View —- приписываются маски различным типам архивных файлов (tgz, tar.gz, tar — для tar-архивов, zip — для архивов Zip, и т. д., список можно расширять произвольно).

И, наконец, в закладке Misc назначается, в частности, вызываемый редактор для текстовых файлов.

В отличие от KFM, в настройках Kruiser отсутствует возможность изменения гарнитуры, кегля и начертания шрифта, цвета его и фона: во всех этих случаях используются системные установки для KDE в целом.

Кроме главного меню, существует также меню контекстное, вызываемое традиционной правой кнопкой мыши. В поле дерева каталогов это меню имеет опции Explore (выведение содержимого в поле файлов), Expand и Collapse (развертывание и сворачивание подкаталогов соответственно), Delete (это — понятно), Refresh (считывание листа каталогов заново), Properties (через которые происходит управление правами доступа, и для файлов тоже).

В поле файлов в контекстном меню присутствуют пункты Cut, Copy, Delete, Move to Trash. При фокусировании на каталоге к ним добавляется Explore (разворачивание каталога), на файле — Open (если этому типу файла приписано какое-либо приложение). Open with (выбор открывающего приложения из списка) и Edit (открытие в текстовом процессоре, установленном в настройках по умолчанию).

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

А вообще-то основным способом работы с файлами в Kruiser является управление манипулятором (то есть, по простому, перетаскивание мышью). Таковое возможно как между полями дерева каталогов и файлов (в обоих направлениях), так и между панелями файлов (если их две). При перетаскивании возникает контекстное меню с тремя пунктами — Copy, Move и Link.

Что удается обнаружить не сразу — так это то, как выполняется переименование файлов. Эта функция доступна одним единственным образом: нужно щелкнуть (в списке файлов) именно на имени, а не на пиктограмме файла. После этого вместо существующего имени можно впечатать любое другое, подобно тому, как это сделано в Windows Commander. Нужно только не забыть нажать после этого клавишу <Enter>: если просто увести курсор в другую позицию, исходное имя файла (или каталога, без разницы) восстановится.

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

Kruiser не имеет встроенного архиватора. Но через контекстное меню (опция Open with) можно для открытия архива вызвать любой архиватор из имеющихся в системе, в том числе и тот же Archiver, который встраивается в KFM.

Для ftp-доступа можно использовать опцию Connect new device (в меню Tools) и из выпадающего меню выбрать пункт Ftp. После чего прописать имя соединения, адрес сервера и порт; поля для записи логина и пароля хотя и присутствуют, но недоступны.

Хотя Kruiser, как следует из названия, является приложением KDE, по быстродействию он разительно отличается от KFM: считывание каталога с многими десятками файлов'происходит на порядок быстрее, копирование — быстрее как минимум вдвое.

Да и в целом он показался мне гораздо более удобным в использовании, нежели KFM. Хотя бы благодаря наличию возможности включить две панели — свойство, привычное по командирским менеджерам, имевшееся в приснопамятном File Manager из Windows З.хх, но пропавшее в Windows Explorer (видимо, по причине пресловутой ненужности народу; a Explorer народу нужен?). Потому что настало время обратиться к тем файловым менеджерам, которые пользуются любовью народа (как всегда, не понимающего, что ему нужно). И являют собой клоны Norton Commander.

Клоны Norton Commander

Хотя термин этот, возможно, здесь не вполне оправдан — многие файловые менеджеры командирского стиля далеко отошли от своего прототипа, аккумулировав положительные черты Explorer-подобных систем. И унаследовав от предка только двухпанельное представление и комбинации горячих клавиш для основных операций.

Маленькое отступление: в чем причина любви нашего народа к производным Norton Commander? Ведь ни в одной другой стране мира (и паче всего—в Америке) они не пользуются хотя бы сравнимой популярностью. Это оставалось для меня загадкой, пока я не прочитал посвященное Norton Commander исследование на сайте NeoSoft (http://www.neosoft.ru), в котором доказывается, что Питер Нортон — не кто иной, как лейтенант Шмидт, счастливо спасшийся из лап царизма и иммигрировавший в Америку, где поступил в американские ВМС под прославившим его в дальнейшем псевдонимом. Вероятно, призванным подчеркнуть, что он пришел "с холода". Имя свое, что характерно, он сохранил, а отчества у американцев не приняты.

Дослужившись до чина коммандера (что-то среднее между каперангом и контр-адмиралом), он вышел в отставку и подался в софтверную индустрию, где и нашел свое истинное призвание. Так что корни Norton Commander уходят не куда-нибудь, а все в ту же Русь исконную...

Версия, конечно, спорная, но имеющая право на существование. И, главное, многое объясняющая, вплоть до цветов интерфейса Norton Commander по умолчанию (инвертированные цвета Андреевского флага). Принимать или не принимать ее — оставляю на ваше усмотрение.

Однако я отвлекся. Первое, что приходит на ум при обращении к платформе Linux в рамках рассматриваемой темы — Midnight Commander.

Файловый менеджер Midnight Commander

Это известный аналог Norton Commander. Именно он сохранил наибольшее количество черт своего предшественника, хотя функционально далеко его перерос. Много говорить о нем я не буду. Во-первых, он настолько близок к исходному Norton, что любой работавший с последним без труда разберется с ним. Во-вторых, он подробно описан на сайте Виктора Костромина. А в третьих, главное, где возникает потребность в файловых менеджерах — это графические оболочки (в консоли удобнее все же пользоваться средствами командной строки). Однако кое-что о нем сказать необходимо, так как именно МС — одна из программ, вызывающих чувство близости при первом заходе в Linux того, кто помнит времена чистого DOS.

И так, Midnight Commander — это консольный файловый менеджер. Он входит в состав большинства дистрибутивов Linux (за исключением сугубо американских — они ведь патриоты и почвенники еще почище нас). И в ряде из них, как в Linux Mandrake, устанавливается по умолчанию. Вызывается просто — набором те в командной строке. После чего возникают две всем памятные панели сине-белого цвета со строкой меню сверху и подсказкой по горячим клавишам — снизу (рис. 5.2).

Что делать дальше — знают все, заставшие времена DOS (а кто не знает — значит и потребности в этом не испытывает). Скажу только одно: въевшаяся в плоть и кровь привычка перейти на другой диск с помощью клавиш <Alt>+<Fl> или <Alt>+<F2> вызовет неожиданный эффект. Во-первых, как уже говорилось, в Linux нет понятия диска. И дисковый раздел, и второй винчестер, и дискета — не более, чем подкаталоги дерева каталогов, добраться до которых можно обычным для Norton способом перехода из каталога в каталог. А во-вторых, комбинация <АК>+функциональная клавиша зарезервирована в Linux для перехода в другую виртуальную консоль. Не зная этого, по первому разу нажав <Alt>+<F2>, можно весьма удивиться, обнаружив черный экран с предложением авторизации.

Впрочем, это, пожалуй, единственная сложность при работе с МС. А посему мы расстанемся с ним, перейдя к Norton-подобным файловым менеджерам графического режима.

Таковых довольно много. Это и KCommander, предназначенный для KDE, и Gentoo, основанный на библиотеке Gtk и ориентированный на применение с GNOME. Однако первый из них (претендующий быть функциональным аналогом Windows Commander Христиана Гислера) еще не совсем доработан, второй же показался мне недостаточно устойчивым и не очень удобным.
Рис. 5.2. Файловый менеджер Midnight Commander

А потому я остановлюсь на двух файловых менеджерах, не привязанных к какой-либо среде или специфической библиотеке — XNC и XWin Commander.

Файловый менеджер XNC

XNC (X Northern Captain) — произведение нашего соотечественника, Леонида Храмова. Он доступен на сайте http://www.xnc.dubna.su в исходных текстах или в виде rpm-пакета.

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

В верхней части экрана — строка анимированного заголовка. Ниже — строка меню, переключаемого с помощью небольшой стрелки. В положении по умолчанию в меню пункты: Left, Commands, Options, Right.

В пункте Left определяется представление левой панели (она же — верхняя страница, по умолчанию): короткий или длинный формат файлов; число колонок (от одной до четырех); порядок сортировки (по имени, расширению, размеру, дате или без сортировки); выход из программы, перед которым, как и во всех клонах Norton, от нас спрашивают подтверждения серьезности этого намерения. Содержание пункта Right идентично, за исключением возможности выхода из программы.

В пункте Commands — основные манипуляции с файлами:
перемонтирование текущего каталога;
вызов пользовательского меню;
просмотр и редактирование отмеченного курсором файла;
копирование, перемещение/переименование и удаление файла, создание каталога;
изменение прав доступа к файлу или каталогу, смена его владельца;
поиск файла, в том числе с использованием шаблонов, от текущего или от корневого каталога;
подсчет количества файлов в каталоге (включая подкаталоги любой степени вложенности) и их суммарного объема;
информация о запущенных процессах и загрузке оперативной памяти, а также о статусе файла или каталога (его inode, количество ссылок и т. д.);
сравнение каталогов.

В пункте Options — редактирование пользовательского меню и привязки типов файлов к приложениям (оба осуществляются вручную, во встроенном текстовом редакторе), а также конфигурирование.

Ниже меню — собственно страница-панель, переключаемая, как я уже говорил, с помощью закладок. Под панелью размещается строка сотояния, командная строка (в которую, как и в Norton, можно поместить маркированный курсором файл путем комбинации клавиш <Ctrl>+<Enter>), строка горячих клавиш. Последние в целом аналогичны таковым Norton Commander. Только клавиша <F1> вызывает не помощь по программе, а man-страницы (которые нужно указать вручную), а клавиша <F9> устанавливает права доступа к файлу.

Последняя опция (доступная и через меню) реализована достаточно удобно. Правда, с ее помощью нельзя изменить права доступа рекурсивно для содержимого каталога. Но зато эту операцию можно проделать над выделенной группой файлов или каталогов. Кстати, выделение осуществляется так же, как и в Norton Commander — "серым" плюсом, снятие выделения — "серым" минусом.

Начальное конфигурирование можно выполнить из меню — Options ¦ Configuration посредством панели с тремя закладками — Main, Prompts, Look/Feel. Оно достаточно элементарно, позволяя включить/отключить показ скрытых файлов, запросы на выполнение основных действий над файлами (копирования, перемещения, удаления и т. д.), время сканирования каталогов, указать параметры, которые должны отображаться в строке состояния.

Однако основная настройка требует запуска программы xncsetup. Она вызывает конфигурационную панель с пятью закладками. Первая (Common) позволяет определить:
пути для конфигурационных файлов (которые можно отредактировать и вручную, но только при закрытом XNC, иначе параметры текущего сеанса его будут восстановлены при выходе);
геометрию окна, открываемого при запуске XNC;
средства просмотра и редактирования текстовых файлов (по умолчанию для этого используется редактор IVES, но можно выбрать любой другой из имеющихся в системе);
внешний вид XNC — в виде страницы с закладками (по умолчанию), двух горизонтальных или вертикальных панелей (в последнем случае узнается праотец-Norton).

В закладке Color определяются цвета фона и текста для файлов различных типов. Это можно сделать бегунками или указать параметры RGB вручную. В закладке Fonts определяются основной шрифт и шрифты для различных элементов интерфейса, в том числе — встроенного редактора IVES. А в закладке Keys можно переопределить горячие клавиши и их комбинации для основных файловых манипуляций и навигации по панелям.

Поработав в программе xncsetup, можно вернуть этому файловому менеджеру первозданный вид, идентичный Norton Commander. На чем и успокоиться, переходя к следующему клону — XWC.

Файловый менеджер XWC

Файловый менеджер XWC (X WinCommander) также написан нашим соотечественником, Максимом Барановым (правда, насколько я понял — бывшим). Найти его можно на http://www.geocities.com/SiliconValley/Mouse/7912/xwc.htmlc. С точки зрения интерфейса он на первый взгляд весьма отличен от Norton Commander, унаследовав от него, пожалуй, только две вертикально расположенные панели. Однако функционально XWC достаточно близок к нему, что позволяет включить его в число детей "командира Нортона".

Запустив XWC, можно, помимо упомянутых панелей, наблюдать: строку меню (с пунктами Left, Commands, Bookmarks, Options, Right и Help), выпадающее меню для навигации, инструментальную панель (которая может быть заполнена плоскими или объемными кнопками). Пути к текущему файлу и статусные строки — самостоятельные для каждой панели. В общем, можно наблюдать некоторое сходство с Windows Commander; однако, вопреки старой и общепринятой командирской традиции, горячие клавиши-кнопки отсутствуют.

Однако если понажимать на функциональные клавиши, родство с Norton Commander проступает отчетливо: клавиша <F5> осуществляет копирование файлов и каталогов, <F6> — перемещение/переименование, <F8> — удаление, <F7> создает каталог, <F9> позволяет изменить права доступа, a <F10> — это выход из программы (как обычно, с запросом на подтверждение).

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

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

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

Содержание пункта Bookmarks понятно. Это создание закладок для быстрого перехода в какой-либо каталог.

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

Основной же способ выполнения файловых операций — из контекстного меню по щелчку правой кнопки мыши на панели, файле или каталоге, или их выделенной группе (выделение группы осуществляется стандартным для Windows способом, левой кнопкой мыши при нажатой клавише <Shift> или <Ctrl>).

Перечень команд контекстного меню для панели дублирует пункт Left (или, соответственно, Right) из главного меню. Для файла содержание этого меню составляют пункты:
Open with, с историей программ, использованных для открытия файлов не только в текущем сеансе, в виде выпадающего меню;
View и Edit, открывающие текстовые файлы для просмотра и редактирования средствами, определенными через Options ¦ Customize;
Add to archive, выполняющий стандартно архивацию в формат tar.gz за счет встроенного (и не настраиваемого) архиватора; созданный (да и любой другой) архив этого формата можно распаковать через то же контекстное меню: пункт Extract to добавляется в него автоматически при щелчке на упакованном файле; однако средств просмотра содержимого архива без его распаковки, подобных таковым в KFM, не предусмотрено;
Cut и Copy, Link и Symbolic Link, Delete (понятно без комментариев) скажу только, что копирование можно осуществить и перетаскиванием мышью с панели на панель или на дерево каталогов;
Attributes, где опять-таки устанавливаются права доступа и принадлежности: как для одиночного файла или каталога, так и для их группы; кроме того, для каталога можно включить опцию рекурсивного изменения (то есть для вложенных файлов и подкаталогов); последняя особенность делает XWC уникальным в ряду прочих файловых менеджеров.

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

В заключение рассказа о файловых менеджерах скажу о программе, которая не может быть отнесена ни к производным Windows Explorer, ни к клонам Norton Commander, это — XFTree.

Файловый менеджер XFTree

XFTree — штатное средство для управления файлами из интегрированной среды XFce, описанной в предыдущей главе. Он имеет древовидную структуру, начинающуюся по умолчанию от /$НОМЕ, которая может разворачиваться и сворачиваться.

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

Копирования и перемещения файлов в меню не предусмотрено. Первое осуществляется просто перетаскиванием выделенных элементов (множественное выделение — как в Windows, мышью при нажатых клавишах <Shift> или <Ctrl>), в том числе и между разными окнами XFTree (их можно открыть сколько угодно); для перемещения нужно сначала выделить файл или их группу, а затем прибегнуть к перетаскиванию при нажатой клавише <Shift>.

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

В целом XFTree показался мне соответствующим стилю среды XFce (хотя, при наличии установленной библиотеки Gtk, может функционировать и в любой другой оконной среде). Он производит впечатление очень быстродействующего, особенно в сравнении с крайне задумчивым KFM: разворачивание многоуровневых каталогов или поиск от корневого каталога осуществляется практически мгновенно. Однако для повседневной работы не очень удобен: перетаскивать файлы вдоль ветвистого дерева каталогов не очень удобно — приходится открывать второй экземпляр программы, нет никаких интерактивных настроек цвета, шрифтов и прочего (все это устанавливается через конфигурирование XFce в целом), кроме невозможности перемещения файлов, нет также встроенного или подключаемого архиватора.

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

А посему, возможно, вам покажется, что лучший выбор все же — это командная строка.

Командная строка как универсальный инструмент управления файлами

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

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

Сразу после загрузки и авторизации мы оказываемся в собственном домашнем каталоге, сокращенно называемом $НОМЕ. Чего нам хотелось бы перво-наперво? Правильно, просмотреть его содержимое. Что мы и делаем командой is. Результат ее выполнения — нечто вроде:

Desktop/        cat            list1        song/     wallpapers/ 

GNUstep/        different.jbd  list2        test/ 

abelskaya.jbd   galich.jbd     mysite/      test01.txt 

allwork/        imagel.raw     mysongs.jbd  tmp/ 

autosave/       kjukebox.log   nsmail/      visbor.jbd

то есть сплошного списка, где файлы и каталоги следуют без разбора в порядке кодов ASCII (различить их можно только по знаку / в конце имени каталога). Причем, как мы точно знаем, не все файлы и каталоги: ведь, помнится, мы в свое время редактировали конфигурационный файл командной оболочки bash, которого в нашем списке не наблюдается. Попробуем его выловить, дав команду

ls -A

где -А (от англ. all) — опция, предписывающая вывести список всех файлов. Результат — на лицо, то есть на экране:

.RealNetworks_RealMediaSDK 60   .mime.types 

.RealNetworks_RealPlayer_60     .netscape/ 

.RealNetworks_RealShared_00     .qcad/ 

.Xauthority                     .sane/ 

.Xdefaults                      .vimrc 

.Xdefaults.old                  .xap/

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

Ну а получить полную информацию о файлах и каталогах можно, дав команду

ls -1

результатом чего будет список вроде этого:

drwxr-xr-x 5  alv alv 4096 Jan 26 04:01 Desktop/ 

drwxr-xr-x 5  alv alv 4096 Jan 15 05:20 GNUstep/ 

-rw-r—r—   1 alv alv 2687 Jan 17 20:26 abelskaya.jbd 

drwx————  10 alv alv 4096 Jan 24 12:22 allwork/ 

drwxr-xr-x 2 alv alv 4096 Jan 18 17:22 autosave/

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

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

Запомним эту табличку — она пригодится нам при обсуждении прав доступа. А теперь подумаем, что мы хотели бы делать с файлами. Думаю, не ошибусь, если скажу: в первую очередь копировать, перемещать, переименовывать, группировать и удалять.

Копирование осуществляется командой ср с двумя обязательными аргументами: первый — имя файла-источника, второй — приемник (каталог или устройство, которое, правда, тоже каталог). Вместо имени (или имен) файла можно указать шаблон. Например, командой

ср $НОМЕ/* mnt/floppy

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

ср -R /mnt/cdrom $HOME

скопирует в домашний каталог все содержимое CD ROM с сохранением структуры его каталогов. Конечно, если оно туда поместится, во-первых, и если компакт-диск предварительно вставлен в привод и, при отсутствии опции supermount, смонтирован командой mount, во-вторых.

Несколько ранее я жаловался, что при использовании файловых менеджеров при этом обычно возникают сложности, связанные с наследованием новообразуемыми каталогами атрибутов каталогов исходных. Так вот, с командой ср ничего подобного не. произойдет: атрибут "read only" каталогов с CD ROM будет благополучно проигнорирован. Лишний аргумент в пользу командной строки при файловых операциях...

Перемещение и переименование выполняются одной и той же командой — mv (от англ. move) с именами источника и приемника в качестве аргументов. При перемещении на месте источника может быть указано любое количество файлов или шаблоны их имён, а с параметром -R перемещение будет осуществлено рекурсивно. Ну а переименовывать файлы, естественно, придется по одному, с указанием старого имени в качестве первого аргумента и нового — в качестве второго.

Столь же часто возникает необходимость сгруппировать некие файлы в одном каталоге. Для чего последний нужно создать. Что делается командой mkdir (от англ. make directory) с желаемым именем каталога в качестве аргумента. Напомню, что результатом команды

mkdir newdir

будет появление подкаталога в текущем каталоге, при

mkdir ../newdir

он появится уровнем выше, а при

mkdir /newdir

так просто в корневом. Если нужно создать каталог по некоему конкретному адресу, его следует прописать полностью, например

mkdir /home/myname/work/newdir 

с указанием абсолютного пути, или

mkdir work/newdir

относительно текущего каталога myname. Все это относится и к любым другим файловым операциям.

И наконец, хотя все созданные нами файлы являют собой нетленные ценности, иногда их все же приходится удалять. Делается это командой rm (от англ. remove), в том числе при использовании ее с параметром -R — рекурсивно. Нужно только запомнить, что конструкция вроде

rm -R /

способна благополучно удалить с вашего диска все (ВСЕ!) файлы и каталоги, включая и раздел FATxx, если он смонтирован. Правда, для этого потребуются права суперпользователя. От лица пользователя обычного вы можете удалить только все свои собственные файлы.

Тем не менее, для удаления ненужных каталогов лучше прибегнуть к команде rmdir (от англ. remove directory) — она способна удалить только пустой каталог.

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

В мире DOS/Windows архивация и компрессия столь же неразделимы, как Ленин и Партия. Мне, например, не известны примеры архиваторов для этой платформы, которые не были бы одновременно и компрессорами. Но в системах Unix-Linux это понятия разные.

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

Так вот, Linux располагает двумя инструментами командной строки — командами tar и gzip, типичными представителями клана архиваторов и компрессоров соответственно.

Формат команды tar следующий:

tar n archivefile filel [file2 [...]]

где n — литера для требуемой опции (обратите внимание, что дефис перед опцией не ставится). Хотя для получения информации о команде все" равно используется конструкция tar —help. Из которой и можно узнать о многочисленных опциях этой команды. Среди них — создание нового архива и записи его в файл (с и f, соответствен но, это — разные понятия!), добавления в него файлов, (г), просмотр состава архива (t), обновление и удаление файлов из архива, ну и конечно, извлечения их. Многочисленные опции позволяют сохранить не только пути архивированных файлов, но и всю информацию о правах доступа к ним. То есть создать именно резервную копию, идентичную исходному набору файлов, что, в случае повреждения последних, позволяет осуществить их адекватное восстановление.

Ну а gzip — это именно и только чистый компрессор. Формат команды

gzip file

где file — имя файла, подлежащего сжатию. Следует помнить, что файл этот исчезает, замещаясь своим сжатым вариантом — файлом file.gz. Архиватор gzip может использоваться вместе с gunzip — программой, обеспечивающей распаковку сжатого файла. Впрочем, обе эти программы, при указании соответствующей опции, выполняют обратную исходной операцию (прямая операция осуществляется каждой из них без всяких опций).

Команды tar и gzip обычно используются в паре — первой создается архив, второй он сжимается для экономии места. В итоге образуется файл вида tar.gz. Давняя традиция совместного применения этих программ привела к тому, что они стали не только взаимодополняющими, но и взаимозаменяющими: средствами любой из них можно как создать архив с последующим его сжатием, так и развернуть компрессированный архив с полным восстановлением файлов в их исходной позиции.

В итоге большинство программ для Linux, которые можно обнаружить в Интернете, распространяются именно в формате tar.gz, а некоторые исключительно в нем.

Кстати, на протяжении всего повествования неоднократно говорилось о всякого рода программах. Где же они берутся и как устанавливаются? Настало время поговорить и на эту тему.

Средства управления пакетами и установкой программ

Большее или меньшее количество утилит и прикладных программ вы получаете вместе с дистрибутивом. Однако отнюдь не все они окажутся на вашем диске после инсталляции системы — при необходимости их нужно будет устанавливать самостоятельно. Не говоря уже о тех программах, которые вы скачаете из Интернета.

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

Должен сказать, что при выборе из двух равнофункциональных (по описанию) программ я всегда отдаю предпочтение той, которая имеет откомпилированный вариант. Не потому, что компиляция из исходников — такое уж сложное дело. Просто мне представляется (возможно, необоснованно) — если автор не поленился собрать бинарный пакет, значит, по крайней мере он сам не каждый день находит ошибки в своей программе. Хотя, насколько я понимаю, распространение только в виде исходников может быть принципиальной позицией разработчика.

Существует четыре формата бинарных пакетов (по крайней мере, о других мне неизвестно, если кто знает — подскажите): rpm, deb, tgz и sip. Как говорилось во Введении, это один из отличительных признаков основных линий дистрибутивов Linux. При этом широко распространены только два первых, представляющих линии Red Hat и Debian соответственно: даже в SuSE Linux, первооснова которого — дистрибутив Slackware с форматом tgz, используется формат rpm. Формат же sip применяется, насколько мне известно, только в одном дистрибутиве — Stampede, который пока не дошел до стадии релиза.

Для исходных текстов обычный формат — упомянутый выше архив tar.gz. Хотя в составе дистрибутивов исходники представлены в формате используемых в нем пакетов (rpm — в клонах Red Hat, deb — в производных Debian).

Существует большое количество средств для работы с пакетами. Собственно, почти каждый уважающий себя дистрибутив имеет собственную программу такого рода. Наличие ее — один из показателей зрелости и самостоятельности системы. Однако мы молчаливо предполагаем, что используемый нами дистрибутив — это Mandrake RE, использующий, как и всякий потомок Red Hat, его формат пакетов.

И потому остановимся на средствах управления пакетами rpm. Из которых первейшими для нас будут kpackage, входящая в среду KDE, и Rpmdrake, представляющая собой разработку MandrakeSoft. He потому, что они лучше других, просто это штатные средства рассматриваемого дистрибутива.

Как уже говорилось в разделе о KFM, kpackage автоматически вызывается из этого файлового менеджера при щелчке на rpm-файле, имеющем обычно, как нетрудно догадаться, вид *.rpm, хотя и не обязательно: из-за описанных выше особенностей файловой системы Linux расширение имени файла не связано жестко с его типом.

Разумеется, kpackage можно и просто открыть, набрав соответствующую команду в окне терминала, в строке минитерминала или выбрав из стартового меню (где она находится в пункте Полезное ¦ More, прошу прощения за языковую мешанину, но в русифицированном KDE именно так).

После этого возникает окно с двумя панелями, в левой из которых — дерево установленных rpm-пакетов, разбитых на группы (Base, Development, Xll и т. д.), правая же, имеющая две закладки (Свойства и Список файлов) пока пуста. Если мы щелкнем на конкретном пакете из дерева, то в левой панели будет несколько переключателей и экранных кнопок, а в правой появится информация о пакете (рис. 5.3), включающая:
название;
резюме, в котором обычно кратко сказано о назначении программы;
номер версии программы;
название группы, к которой программа принадлежит;
более или менее подробное описание пакета;
размер, дата установки и сборки, автор и еще некоторые сведения того же рода.
 
Рис. 5.3. Программа управления пакетами kpackage

Разумеется, можно открыть (выбрав в пункте Файл команду Открыть, Открыть недавнее или Открыть URL) и неустановленный пакет, находящийся на дистрибутивном CD ROM, каком-либо ином стационарном или сменном носителе, а также в сети, локальной или глобальной (сиречь в Интернете). В этом случае к списку свойств файла может добавиться еще одно — неудовлетворенные зависимости, где будет указано, какой еще пакет (или пакеты) необходимо установить для нормального функционирования данного.

Смысл закладки Список файлов понятен, отвечая своему названию. Перед установкой пакета неплохо ознакомиться с ним внимательно. Чтобы знать потом, где искать исполнимые файлы, где — документацию и т. д. Впрочем, устанавливаемые компоненты пакетов rpm в подавляющем большинстве попадают в подкаталоги каталога /usr: исполнимые модули — в /usr/bin, документация — в /usr/doc, библиотеки — в /usr/lib и т. д.

Разобравшись с описанием и структурой пакета, можно его и установить, для чего нажимается кнопка Вперед в левом нижнем углу окна; разумеется, можно и отказаться от установки, нажав кнопку Отмена, в этом случае восстановится исходный вид дерева каталогов.

Однако прежде не худо обратить внимание на переключатели:
Обновить
Заменить файлы
Заменить пакеты
Проверять зависимости
Тест (не ставить)

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

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

В общем, на мой взгляд, пакет kpackage интуитивно понятен и прост в использовании. Чего я не сказал бы о пакете rpmdrake. После его запуска (с рабочего стола, из минитерминЭла или любым другим способом) возникает окно, сходное с kpackage: та же панель с деревом каталогов слева и пустая панель— справа; последняя при щелчке на имени rpm-пакета заполняется описанием его свойств и списком входящих файлов (рис. 5.4). Внизу правой панели — кнопка Установка.
Рис. 5.4. Программа управления пакетами rpmdrake

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

Так вот, возможность открытия неустановленного пакета обнаруживается в меню Настройка. Для чего нужно ни много ни мало, сменить источник установки: по умолчанию это дистрибутивный компакт-диск. Но можно выбрать Local, http и ftp, если вам нужно открыть пакет с локального диска, http- или ftp-сервера соответственно.

Если же требуется использовать какой-либо сменный носитель (от дискеты до съемного винчестера), необходимо добавить новый источник инсталляции:

выбрать через меню Настройка ¦ Добавить источник инсталляции (Local, после чего в появившейся панели ввести имя источника (например, local_n) и соответствующий ему каталог (например, /mnt/floppy для дискеты).

Мне все это кажется достаточно запутанным, но при отсутствии KDE или нежелании им пользоваться — пригодно к употреблению, если вы не хотите отказываться от графического режима. Если же командная строка отвращения не вызывает, проще всего прибегнуть к традиционному средству — команде rpm. Запускается она следующим образом:

rpm -[список опций] имена пакетов *.rpm

Имен пакетов может быть указано сколько угодно. Основных же опций — три: инсталляция (i), деинсталляция (u — от англ. uninstall) и запрос (q — от англ. query). Ну а список дополнительных опций (таких, как принудительная инсталляция, обновление пакета, проверка зависимостей и т. д.) можно получить, запустив rpm без опций и аргументов.

Кроме этого, с помощью команды rpm можно создать собственный пакет (прибегнув к опции -ь, от англ. build). Другое его преимущество — простое обращение с взаимозависимыми пакетами: для их нормальной установки обычно достаточно просто привести их одним списком в качестве аргументов. Если это не помогает — попытаться воспользоваться дополнительной опцией f (от англ. force).

Следует помнить, что манипуляции с rpm-пакетами в любой программе требуют прав суперпользователя. При этом Rpmdrake и, иногда, Kpackage (при низких уровнях защиты) сами запрашивают пароль администратора и при правильном его вводе автоматически переходят в этот режим, возвращаясь потом в обычный пользовательский при выходе из программы. Для работы же с командой rpm нужно позаботиться об этом самому, с помощью команд su И exit.

Однако, как я уже говорил, формат пакетов не исчерпывается rpm. И, возможно, необходимая вам программа распространяется в составе какого-либо другого дистрибутива. В этом случае можно прибегнуть к программе alien, позволяющей конвертировать пакеты из одного формата в другой. Она распространяется с дистрибутивом Debian и его производными, но может быть получена из Интернета (например, с http://kitenet.net/programs/alien/ или любого крупного файлового архива). Использовать ее очень просто: в качестве аргумента указывается имя пакета, подлежащего конвертации, а опции определяют, в какой формат он должен быть конвертирован. По умолчанию, без указания опций, происходит конвертация в формат deb, но программа может также работать с пакетами rpm, sip и tgz.

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

Ничего принципиально сложного в этом нет. Архив с исходными текстами распаковывается в подходящий каталог (обычно для этого используются каталоги /usr/local/src или $HOME/src). После чего в нем появляется соответствующий имени программы подкаталог. В правильно оформленной для распространения программе каталог этот должен содержать файлы вроде README, INSTALL, Makefile, configure. Первые два содержат (или не содержат, в зависимости от лени разработчика) описание программы и процесса ее установки.

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

Для приведение файла Makefile в соответствие с последними используется команда . /configure (именно так, по понятным причинам она обязательно запускается из текущего каталога).

После этого наступает очередь команды make. Она входит в состав любого дистрибутива и я не слышал, чтобы она не устанавливалась по умолчанию. Для использования ее обычно требуются права суперпользователя (приобретаемые командой su с указанием административного пароля): большинство компилируемых программ по умолчанию устанавливаются в каталог /usr/local.

И так, запускаем программу make. Она производит сборку исходных текстов в так называемые объектные модули (нечто вроде оверлеев в DOS-программах). Процесс этот может занять довольно долгое время, он сопровождается всякого рода сообщениями (следует надеяться, что не об ошибках — в этом случае процесс прекращается).

По завершении его, то есть по возврату приглашения командной строки, собранную программу нужно установить, иными словами, записать исполнимые модули, библиотеки, документацию и прочее туда, где им надлежит быть впредь (как уже говорилось/обычно в соответствующие подкаталоги /usr/local). Для этого дается команда make install, которая и осуществляет этот процесс.

Наконец, завершающий шаг, необязательный, но крайне желательный — это освобождение каталога с исходниками от продуктов жизнедеятельности команды make, то есть объектных модулей. Делается это командой make clean. На чем процесс установки можно считать законченным, и командой exit вернуться в обычный пользовательский режим.

Таким образом, мы рассмотрели большинство файловых манипуляций под Linux. Забыв лишь об одном — не весь мир работает в этой системе. Конечно, пользователи Windows могут позволить себе просто не знать о существовании других систем. Пользователи же Linux должны помнить о принудительной силе реальности. Реальность же такова, что без Windows обойтись вряд ли удастся. Хотя бы для обмена данными со своими консервативными коллегами. И потому следует рассмотреть вопрос о взаимодействии Linux и Windows.

О взаимодействии Linux и Windows

Взаимодействие это имеет два аспекта — на уровне данных и на уровне программ.

Взаимодействие на уровне данных — это просто возможность прочитать из Linux диск (или дисковый раздел) с Windows (любой версии), что труда не составляет. Для этого нужно только при его (Linux) инсталляции установить поддержку соответствующих файловых систем — FAT, VFAT, FAT32 или NTFS (правда, поддержка последней ограничена). Ну а далее — возможны варианты.

Можно при необходимости явным образом монтировать дисковый раздел с Windows командой

mount dev/had# /точка монтирования

где # — номер раздела (который будет обязательно первым при любом Windows, кроме NT и 2000).

Еще Windows-раздел может монтироваться автоматически при загрузке. Проще всего сделать это на этапе разбиения диска на разделы, предшествующем инсталляции. Для этого достаточно (после создания Linux-разделов) указать точку монтирования для существовавшего ранее Windows-раздела (скорее всего, /dev/hdal), например, /mnt/win.

Поступив таким образом, можно в дальнейшем без проблем считывать и записывать данные в Windows-разделе, не выходя за пределы Linux. Правда, столь же легко их и уничтожить знаменитой командой rm с параметром -R.

Причем безвозвратно: утилиты DOS/Windows типа UNDELETE или UNERASE в этом случае не помогут.

А потому лучше все же для обмена данными использовать специальный раздел диска под FAT16 или FAT32. Если такого раздела не было предусмотрено перед установкой Windows, его можно создать при инсталляции Linux, воспользовавшись ее программой fdisk — она позволяет создавать разделы для любых поддерживаемых Linux файловых систем. И затем определить для нее точку монтирования.

Правда, ни DOS, ни Windows не поймут, что раздел, созданный fdisk для Linux — их родной FAT16 или FAT32. Но теперь ничего не мешает запустить уже FDISK для DOS/Windows — и превратить этот раздел в окончательный FAT. Правда, путем уничтожения (FDISK для DOS/Windows определит его как non-DOS partition) и создания на его месте нового. Главное, точка монтирования для него в дереве каталогов Linux уже будет существовать.

Впрочем, если автоматическое монтирование FAT-раздела при инсталляции Linux определено не было, ничего страшного — эту процедуру можно проделать в любой момент. Путем редактирования файла /etc/fstab, отвечающего за монтирование файловых систем. Для доступа к Windows-разделу достаточно вписать в него строчку вроде

/dev/hdal /mnt/win auto defaults 0 0

Теперь можно не только считывать данные Windows-программ, но и записывать результаты работы в Linux для доступа к ним из Windows. Правда, это верно только в отношении Windows 3.1/95/98. Для Windows NT или 2000, если пользоваться их родной NTFS, возможен только режим чтения. И тип файловой системы в файле fstab следует указывать явно — ntfs (вместо auto).

Кроме того, при копировании из Linux-раздела в FAT-раздел существует еще несколько особенностей. Так, если данные копируются в раздел с FAT16, все имена файлов будут приведены к DOS-стандарту 8.3. И принудительно переведены в верхний регистр. А в случае с разделом FAT32 все происходит еще забавнее: имена Linux-файлов, случайно совпадающие с форматом DOS (8.3), будут преобразованы в верхний регистр, вне зависимости от того, в каком регистре они были набраны в оригинале. Тогда как имена файлов, содержащие более восьми знаков, в имени сохранят изначальное различие регистров. О причинах этого явления можно прочитать в цитировавшейся ранее статье Виктора Хименко.

Кроме этого, существует пакет mtoois, специально предназначенный для работы с файловой системой DOS. Он был создан для работы с дискетами, отформатированными в этой операционной системе. Конечно, из Linux можно смонтировать дискету в DOS-формате и командой ср (или через любой файловый менеджер) записать на нее файлы. Однако в ряде случаев это приводит к ошибкам. Правда, я с проблемами считывания записанных таким образом дискет в DOS/Windows не сталкивался. Но вот записать на нее подчас уже ничего не удается, и всякого рода "DiskDoctor'aMH" она не лечится.

Основу пакета mtools составляет серия команд гибридного вида и синтаксиса. Так, команды ср и copy (Linux и DOS соответственно) подменяются командой тсору, используемой, для примера, таким образом:

mcopy $.HOME/file a: file

где file — имя копируемого файла, причем обязательно в стандарте DOS (то есть 8.3). Работает эта команда с одиночными файлами. Кроме того, существуют команды mread (для копирования файлов DOS в Linux) и mwrite (для копирования файлов Linux в DOS). Они позволяют оперировать группами файлов (но, насколько я понял, не подкаталогами).

В пакете mtools имеются и другие средства работы с файлами, аналогичные соответствующим в DOS. Но подробно я на них останавливаться не буду: все же применение этого пакета, при засилии Windows 9x с ее длинными именами, достаточно ограничено.

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

Перво-наперво, появилась программа Explore2fs Джона Ньюбайджина (John Newbigin, http://uranus.it.swin.edu.au/~jn/linux). Это zip-архив размером чуть больше 300 килобайт, доступный, в частности, на Linux.Freeware.ru (http://linux.freeware.ru). Программа бесплатная (на условиях GPL), позиционируется как экспериментальная версия, однако почти работоспособна.

Программа Explore2fs не требует инсталляции. После распаковки архива в ней обнаруживается исполнимый модуль, dll-файл, ReadMe, условия копирования и список изменений. Запуск программы приводит к появлению окна, подобного Windows Explorer (рис. 5.5). В левой его части — обнаруженный Linux-раздел (с префиксом по умолчанию — hd, но, вероятно, можно установить и sd — за отсутствием SCSI-диска проверить не смог), разворачиваемый в дерево каталогов; в правой части — список файлов текущего каталога, настраиваемый так же, как в Windows Explorer (в виде значков, короткого или длинного списка).

А дальше — все просто. Выбирается требуемый файл или каталог, щелчок правой кнопки мыши — и можно просмотреть его свойства, либо сразу экспортировать в Windows-раздел, для чего указывается путь. Все. Файл или каталог (включая подкаталоги любой степени вложенности) скопирован и доступен под Windows. Разумеется, те же действия можно проделать и через меню.
Рис. 5.5. Explore2fs — Windows-программа для чтения дисковых разделов ext2fs

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

С разделом ext2fs можно работать только в режиме чтения. Правда, в меню File присутствуют такие команды, как New Folder, Rename, Delete, Save as, но работают они только в пределах Windows-раздела. Правда, их присутствие (в неактивизированном виде) и в контекстном меню показывает, что автор предполагает в будущих версиях ввести и режим записи в Linux-разделы из Windows. Поживем — увидим.

В существующей версии настройки (меню View ¦ Options) минимальны. Можно, как говорилось, изменить префикс дискового раздела, задать программу для просмотра текстовых файлов, определить доступ к файлам по паролю (для пользователя и группы), и еще несколько мелочей. Однако и это лучше, чем ничего.

Кроме того, недавно появился пакет itools, предназначенный для работы с файлами Linux из DOS/Windows. Как можно понять из названия, он задуман как инструмент, параллельный mtoois, и обеспечивающий выполнение тех же функций. Это серия утилит командной строки, с помощью которых можно, например, копировать файлы из. раздела ext2fs в раздел FAT, причем и в том случае, если первый — не единственный в системе, в отличие от Explore2fs. ,

Второй аспект рассматриваемого вопроса — взаимодействие на уровне программ. Необходимость в этом может возникнуть даже в том случае, если вы не используете ни одной программы под DOS/Windows. Например, при обновлении BIOS системной платы: все известные мне производители выпускают утилиты такого назначения только под чистый DOS (хотя, говорят, на современных "мамах" есть средства перепрошивки BIOS без загрузки какой-либо операционки вообще, но мне таких пока видеть не посчастливилось).

Так что если появилась настоятельная потребность сменить BIOS (например, при установке нового большого винчестера в систему, BIOS которой таковых не поддерживает), DOS или Windows истреблены как класс при установке (не зря же сжигали корабли, мосты и прочие транспортные средства!), и под рукой случайно не завалялось хоть какой DOS-машины — вот тогда-то без запуска DOS-программы (хотя бы одной-единственной) из-под Linux не обойтись.

Для этого существует программа dosemu. Запускается она простой и понятной командой — dos. Правда, для этого необходимо иметь права суперпользователя. Этой командой создается нечто вроде виртуальной машины, эмулирующей реальный режим процессоров ix86. Чем-то напоминающий DOS-сессию в Windows или, скорее, OS/2. После запуска программы (это можно сделать и из окна терминала) вы видите черный экран с серией сообщений, завершающихся чем-нибудь вроде

Welcome to FreeDOS (http://www.freedos.org)!

При этом пропадает возможность пролистывания экрана с помощью комбинации клавиш <Shift>+<PageUp>, <Shift>+<PageDown>, а в окне терминала — также и возможность скроллинга. Зато появляется знакомое до боли приглашение командной строки DOS

с:\>

в которой естественным поползновением будет ввести dir /p. Ответом на что будет список вроде этого:

BOOT    BIN 512   12-07-99 10 59a 

COMMAND СОМ 41568 12-07-99 10 59a 

COPYING     18316 5-04-99  11 43a 

INSTALL BAT 743   5-04-99  11 43a 

IPL     SYS 54928 12-07-99 10 59a 

KERNEL  EXE 68112 12-07-99 10 59a 

KERNEL  SYS 72169 5-04-99  11 43a 

SYS     COM 12344 5-04-99  11 43a

где можно видеть родные и близкие AUTOEXEC.BAT, CONFIG.SYS и прочие прелести. А перейдя в каталог BIN (командой с: \> cd с: \bin), можно обнаружить основные исполнимые файлы DOS:

.            DIR         12-07-99 11:02а

..           DIR         12-07-99 11:02а 

ASSIGN СОМ         13867 12-07-99 11:02а 

ATTRIB EXE         8609  12-07-99 11:02а

и так далее. Каковыми и можно воспользоваться обычным для DOS образом.

Разумеется, возможности dosemu не исчерпываются запуском штатных команд DOS. В частности, не составит труда запустить самораспаковывающийся архив, в виде которого обычно распространяются обновления BIOS. Неплохо, конечно, озаботиться загрузочной дискетой DOS. Однако если ее не окажется под рукой — не беда: командой SYS . сом можно создать некое ее подобие. Не знаю, насколько функциональна загруженная с нее система (называемая FreeDOS) — не проверял, — но запустить перепрограмматор BIOS и успешно провести процедуру его обновления она вполне способна.

А вообще,, говорят, dosemu справляется с запуском и мощных прикладных программ, вроде WordPerfect, правда, не знаю каких версий: интересно было бы посмотреть, как она поведет себя при запуске графической оболочки старших его версий, или, скажем, Quattro Pro для DOS, которая тоже имела свою оригинальную (и весьма приятную) графическую оболочку. Но всего этого я не проверял за ненадобностью, и потому с темой эмуляции DOS заканчиваю. Скажу только, что, удовлетворив чувство ностальгии по DOS (а я, глядя на современные программы для Windows, его частенько испытываю, честное слово), из программы можно выйти командой EXITEMU.

Переходя к теме запуска под Linux приложений Windows. Тут я тоже не могу похвастаться богатым опытом: ни с одним из эмуляторов Windows (а их развелось довольно много — wine, bosch и другие) я до сих пор дела не имел. Скажу только несколько слов о виртуальных машинах.

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

Программа VMWare (текущая версия — 2.01) разработана не только для Linux, но и для Windows NT/2000. Будучи установлена должным образом (а под Linux она распространяется в виде бинарного rpm-пакета, но без исходных текстов), система эта позволяет запускать из-под родительской операционной системы (например, Linux) почти любую другую из широко распространенных.

Официально в качестве гостевых систем поддерживаются Windows 95/98, Windows NT/2000. Однако, по имеющимся сведениям (частично проверенным личным опытом) можно запустить и любой другой вариант Linux, и FreeBSD с ее производными, и BeOS, и некоторые коммерческие Unix-системы. Во всяком случае, под Linux это единственная возможность получить доступ ко всему спектру Windows-приложений, хотя — и с очень ощутимой потерей производительности.

Установка и настройка VMWare, а также организация обмена данными между виртуальной гостевой системой (скажем, Windows 9x) и реальной родительской (тем же Linux) — занятие не то чтобы чрезвычайно сложное, но требующее внимания и не всегда тривиальное. Особенно, как ни странно, с точки зрения Windows-мигранта. Детальные описания этого процесса можно найти в статьях А. Ерижокова (на http://www.citycat.ru/Iiniix/) и В. Костро-мина (http://linux-ve.chat.ru/). Поэтому я на нем останавливаться не буду.

Скажу только, что в ряде случаев, конечно, VMWare может оказаться незаменимым. Например, при тестировании Web-узла, разрабатываемого и управляемого под Linux, с точки зрения его функционирования под Windows на клиентской стороне. Или, напротив, если вся потребность в Windows-программах сводится к раскладыванию пасьянсов для успокоения нервов, как это имеет место у меня.

В противном случае — то есть если необходимость просто в использовании некоторых (и, тем более, многих) Windows-приложений, — дополнительное удобство от их использования под виртуальной машиной (нет необходимости в перезагрузке системы при переходе от Linux- к Windows-приложениям) не окупает потери производительности (по крайней мере на конфигурациях вплоть до Pentium-III/733 и 128 Мбайт Оперативной памяти). В этом случае проще завести отдельный раздел для Windows и его приложений.

Напомню, что первый вариант, как и второй, не избавляет от необходимости приобретения легальной копии Windows (или мук совести от использования ворованной). Если же учесть стоимость самой VMWare (под три сотни уе., хотя можно пользоваться и пробной версией, перерегистрируемой раз в месяц— это, как будто, вполне легально). Поневоле задумаешься, а не проще ли завести вторую машину, реальную, и соединить ее с первой сетью — чтобы обойтись одной консолью?

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

Средства записи на CD

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

В общем, только CD-R/RW близки к тому, чтобы стать стандартным устройством персонального компьютера (к чему я не устаю призывать уже около двух лет). И средства их записи — непременный атрибут системы, претендующей на массовое использование.

Надеюсь ошибиться, но в Linux пока эти средства далеки от совершенства, как с точки зрения функциональности, так и удобства. Главное из них — это пара утилит mkisofs и cdrecord. Первая создает так называемый образ диска, вторая обеспечивает его запись на CD. Кроме того, имеются еще mkhybrid (для создания образов) и cdrdao (для записи), но, насколько я  могу судить, они применяются реже.

Правда, если обратиться к любой коллекции программ для Linux, можно обнаружить десятка два программ, предназначенных для записи CD-R/RW. Однако это просто оболочки (front-end applications), объединяющие в едином интерфейсе перечисленные утилиты командной строки.

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

Возможно, что перед записью CD придется произвести некоторые предварительные действия. Почему? Напрямую Linux поддерживает записывающие и перезаписывающие CD-устройства только с интерфейсом SCSI. Причина этого мне не известна, вероятно, так уж сложилось исторически.

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

Надо сказать, что, например, Linux Mandrake (возможно, и другие дистрибутивы) по умолчанию устанавливается так, что устройство CD-R/RW, если оно имеется в наличии, определяется как эмулирующее SCSI. В других же дистрибутивах для осуществления этого, скорее всего, придется перекомпилировать ядро. Каким образом — довольно подробно описано в CD-Writing HOWTO, имеющемся, в частности, и в русском переводе.

Однако предположим, что этот предварительный этап благополучно минул. Принимаемся за прикладной софт для записи CD-R/RW. В комплект Linux Mandrake входит (помимо утилит командной строки mkisofs и cdrecord) две такие программы — GNOME Toaster и X-CD-Roast. Первую я опробовать не рискнул из-за настороженного отношения к GNOME-приложениям вообще. Но — посмотрел. Замыслена она хорошо, чем-то напоминает WinOnCD: файлы и каталоги просто перетаскиваются из дерева в область записи, нажимается кнопка Record — и, как будто, все. Однако, повторяю, на практике я ее не использовал. Взявшись сразу за X-CD-Roast.

Программа X-CD-Roast

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

Работа с программой X-CD-Roast возможна исключительно в режиме администратора; попытка запустить ее от лица пользователя (командой xcdroast) приводит к сообщению об отсутствии такого файла. После запуска программы возникает красочная заставка с буквами "X-CD-Roast" на фоне пламени (это к тому, что данные не горят?) в центре и серией кнопок слева: SCSI/IDE info, Setup, Copy Data-CD, Copy Audio-CD, Master CD, Exit.

Нажав первую из кнопок, можно убедиться, что записывающее SCSI-устройство у нас имеется (или благополучно эмулируется), иначе все дальнейшее теряет смысл. Указывается также читающее CD-устройство, в соответствии со своим интерфейсом. Если имеется только один пишущий привод, как, например, у меня, он будет фигурировать в обеих ипостасях. Это создает ряд неудобств, в частности, не позволяет копировать напрямую аудиодиски.

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

Нажатие кнопки Copy Data-CD или Copy Audio-CD при отсутствии читающего привода приводит к мгновенному "вылетанию" программы, поэтому ознакомиться с их содержимым мне не удалось. Ну а кнопка Master CD дает доступ к тому, что нам нужно — сохранению наших данных на века.

Здесь в первую очередь нужно выбрать файлы и каталоги, которые предполагается записать. Делается это весьма "кучерявым способом": сначала указывается каталог, где располагаются все нужные файлы (и не только они), а затем в поле Exclude path по одному указываются те подкаталоги, которые записывать не нужно.

Определяя источники для записи, можно (и нужно) контролировать процесс через Preview CD-Contents и подсчет объема образа: при превышении максимально возможного объема CD никаких сообщений не следует, можно, увлекшись, спокойно создать образ размером гигабайта в два-три.

Затем определяется файловая система будущего диска. Программой X-CD-Roast поддерживаются следующие из них:
MS DOS, то есть чистый IS09660, поддерживающий имена с маской 8.3;
Unix Rock Ridge, обеспечивающий воспроизведение таких особенностей файловой системы Linux, как длинные имена, символические ссылки и т. д.;
Windows 95/NT — это тот формат, который известен в Microsoft под красивым именем Joliet extensions, то есть IS09660 с поддержкой длинных имен файлов;
Rock Ridge плюс Windows 95/NT, как нетрудно понять, сочетание поименованных файловых систем.

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

Определившись с источниками и файловой системой, можно указать всякого рода метки и идентификаторы диска, а затем, проверив для страховки конечный объем, перейти к созданию образа, каковой пишется в указанный ранее раздел диска в виде raw-файла. Затем дается команда для записи — и процесс, индицируемый в виде прогрессирующей панели, пошел. Нужно заметить, что под Linux при записи с физического образа он занимает несколько больше времени, чем под Windows, даже с виртуального образа: на моем устройстве средние времена записи полного диска составляли 22 и 18 минут соответственно. Однако, как будто, в первом случае он более устойчив: случайные движения мыши или запуск неотключенного по забывчивости скринсейвера не приводят к переполнению буфера. Впрочем, проверять это — не рекомендую, во избежание...

Работа с перезаписываемыми дисками в X-CD-Roast по штату не предусмотрена. Соответственно, нет режима стирания CD-RW. Однако записывать на носители CD-RW он в состоянии, как и на обычные CD-R. А вот на что мне не удалось обнаружить даже намеков — это на режим мультисесси-онной записи.

В общем, X-CD-Roast — орудие, пригодное к употреблению. К его достоинствам можно отнести гибкость настройки файловой системы, а также устойчивость — при всех моих экспериментах, как и "по делу", мне не удалось "запороть" ни одного диска. Однако отсутствие средств мультисессионности и работы с CD-RW заставило меня продолжить поиски, в результате чего методом научного тыка я выудил программу под именем KOnCD.

Программа KOnCD

С точки зрения интерфейса KOnCD — предельно простая программа, предлагающая при запуске на выбор копирование CD или аудиодиска, создание мастер-диска, некий Tools4 и установку параметров. Тем не менее, KOnCD обладает некоторыми полезными особенностями. Так, она позволяет писать с уже готового iso-образа (тех же основных типов — для Unix Rock Ridge, Win9x/NT, DOS, однако заказнйй опции не предусмотрено). Есть возможность создания загрузочных CD (при наличии образа загрузки, естественно).

Кроме того, KOnCD опознает перезаписывающие устройства и предлагает (через вышепоименованный Tools) различные варианты очистки дисков CD-RW (полная, быстрая и т. д.). Имеется возможность мультисессионной записи. И вообще, вроде все, что может потребоваться впредь. Да и в использовании она существенно проще, чем X-CD-Roast, по крайней мере, мне показалось так.

Недостаток у KOnCD один, но — существенный: поскольку программа ныне представлена в виде достаточно ранней бета-версии, то устойчивостью не блещет, вылетая подчас во время записи. Носитель CD-R при этом, естественно, гибнет. Более того, и диск CD-RW реанимировать не удается, даже полным стиранием, ни под Linux, ни под Windows.

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

GNU OCXE GNU LINUX
Сайт управляется системой uCoz