Сага о файлах
Средства работы с файлами, архивами, пакетами

Содержание

  • Что нужно знать о файловой системе Linux
  • Требования к файловому менеджеру
  • Средства среды KDE для работы с файлами
  • Клоны Norton Commander
  • XFTree
  • Командная строка как универсальный инструмент управления файлами
  • Средства управления пакетами и установки программ
  • О взаимодействии Linux и Windows
  • Средства записи на CD

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

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

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

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

Но сначала несколько слов о том,

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

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

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

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

  • обычные файлы;
  • каталоги;
  • файлы устройств;
  • ссылки.

Обычные файлы - это, во-первых, исполнимые двоичные файлы (типа файлов *.exe или *.com, но не привязанные к какому-либо расширению);во-вторых, 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, где при стремлении программ инсталлироваться глубоко в недра директории Programs Files, ограничение на длину пути в 256 знаков становится реальностью.

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

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

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

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

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

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

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

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

/dev/hda1 /mnt/DOS_hda1 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 supermount fs=vfat,dev=/dev/fd0 0 0
none /proc proc defaults 0 0
none /dev/pts devpts mode=0620 0 0
/mnt/cdrom /mnt/cdrom supermount fs=iso9660,dev=/dev/cdrom1 0 0

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

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

mount /dev/hdc /mnt/cdrom

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

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

Делать этого не нужно: система не дура, и ничего в ней не происходит зря. Поскольку содержимое /usr/X11R6/bin и /usr/X11R6/lib/X11 - не более, чем символические ссылки на файлы из соответствующих раздов каталогов /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 на предмет прав доступа к аудиоустройства, владельцем которых является суперпользователь: возможно, прочие просто не имеют прав исполнения для соответствующих файлов. Выполните целительное действо, описанное в предыдущем абзаце - и наслаждайтесь музыкой в свое удовольствие...

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

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

Во-вторых, ваши права ущемляются при копировании файлов с CD ROM. В 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 будет, скорее всего, KDE, первыми в этом ряду по справедливости должны стоять штатные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Через пункт 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 3.xx, но пропавшее их Windows Explorer (видимо, по причине пресловутой ненужности народу; а Explorer народу нужен?). Потому что настало время обратиться к тем файловым менеджерам, которые пользуются любовью народа (как всегда, не понимающего, что ему нужно). И являют собой

Клоны Norton Commander

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В пункте Commands - основные манипуляции с файлами:

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

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

Ниже меню - собственно страница-панель, переключаемая, как я уже говорил, с помощью закладок. Под панелью - статусная строка, командная строка (в которую, как и в Norton, можно поместить маркированный курсором файл путем комбинации клавиш Control+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 (X WinCommander) также написан нашим соотечественником, Максимом Барановым (правда, насколько я понял - бывшим). Найти его можно на http://www.geocities.com/SiliconValley/Mouse/7912/xwc.htmlс. С точки зрения интерфейса он на первый взгляд весьма отличен от Norton Commander, унаследовав от него, пожалуй, только две вертикально расположенные панели. Однако функционально XWC достаточно близок к нему, что позволяет включить его в число детей командира Нортона.

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

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

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

Сначала рассмотрим действия через меню. Традиционные пункты Left и Right - идентичны по содержания, определяя представление соответствующих панелей, а именно:

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

А вот пункт Commands не вполне традиционен по содержанию, которое составляют подпункты:

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

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

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

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

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

Содержание контекстного меню для панели дублирует пункт 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

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

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

  • открыть каталог в новом окне;
  • создать каталог или файл, удалить и переименовать их;
  • выделить элемент или все, а также развыделить (так в оригинале) их;
  • найти файл, правда, только в каталоге, на котором зафиксирован курсор;
  • просмотреть свойства файла или каталога, в том числе и права доступа, и при наличии необходимости и полномочий - изменить их;

А также несколько действий по переходу - к закладке, на уровень выше и т.д.

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

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

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

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

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

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

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

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

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

Desktop/       cat            list1        song/       wallpapers/
GNUstep/       different.jbd  list2        test/
abelskaya.jbd  galich.jbd     mysite/      test01.txt
allwork/       image1.raw     mysongs.jbd  tmp/
autosave/      kjukebox.log   nsmail/      visbor.jbd

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

ls -A

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

.RealNetworks_RealMediaSDK_60           .mime.types
.RealNetworks_RealPlayer_60             .netscape/
.RealNetworks_RealShared_00             .qcad/
.Xauthority                             .sane/
.Xdefaults                              .vimrc
.Xdefaults.old                          .xap/

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

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

ls -l

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

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 - каталог (который по большому счету тоже файл), а отсутствующий в примере знак | - символическая ссылка (не путать с оператором канала).

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

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

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

cp $HOME/* mnt/floppy

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

cp -R /mnt/cdrom $HOME

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

Несколько ранее я жаловался, что при использовании файловых менеджеров при этом обычно возникают сложности, связанные с наследованием новообразуемыми каталогами атрибутов каталогов исходных. Так вот, с командой cp ничего подобного не произойдет: атрибут 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 file1 file2...

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

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

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

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

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

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

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

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

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

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

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

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

Из которых первейшими для нас на первом этапе будут kpackage, входящая в среду KDE, и rpmdrake, представляющая собой разработку Mandrake-Soft. Не потому, что они лучше других, просто это штатные средства рассматриваемого дистрибутива.

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

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

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

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

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

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

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

Однако прежде не худо обратить внимание на переключатели:

  • Обновить;
  • Заменить файлы;
  • Заменить пакеты;
  • Проверять зависимости;
  • Тест (не ставить).

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

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

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

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

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

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

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

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

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

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

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

Однако, как я уже говорил, формат пакетов не исчерпывается rpm. И, возможно, нужная вам программа распространяется в составе какого-либо другого дистрибутива. В этом случае можно прибегнуть к команде alien, позволяющей конвертировать пакеты из одного формата в другой. Она распространяется с дистрибутивом Debian и его производными, но может быть получена из Интернет (например, с http://kitenet.net/programs/alien/ или любого крупного файлового архива). Использовать ее очень просто в качестве аргумента указывается имя пакета, подлежащего конвертации, а опции определяют, в какой формат он должен быть конвертирован. По умолчанию, без указания опций, происходит конвертация в формат deb, но программа может также работать с пакетами rpm, slp и 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) инсталляции установить поддержку соответствующих файловых систем - FAT, VFAT, FAT32 или NTFS (правда, поддержка последней - ограничена). Ну а далее - возможны варианты.

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

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

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

Еще Windows-раздел может монтироваться автоматически при загрузке. Проще всего сделать это на этапе разбиения диска на разделы, предшествующем инсталляции. Для этого достаточно (после создания Linux-разделов) указать точку монтирования для существовавшего ранее Windows-раздела (hda1), например, /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 уже будет существовать.

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

/dev/hda1	/mnt/win	auto	defaults	0 0

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

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

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

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

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. В левой его части - обнаруженный Linux-раздел (с префиксом по умолчанию - hd, но, вероятно, можно установить и sd - за отсутствием SCSI-диска проверить не смог), разворачиваемый в дерево каталогов; в правой части - список файлов текущего каталога, настраиваемый так же, как в Windows Explorer (в виде иконок, короткого или длинного списка).

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

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

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

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

Кроме того, недавно появился пакет ltools, предназначенный для работы с файлами Linux из DOS/Windows. Как можно понять из названия, он задуман как инструмент, параллельный mtools, и обеспечивающий выполнение тех же функций. Это серия утилит командной строки, с помощью которых можно, например, копировать файлы из раздела ext2fs в раздел FATxx, причем и в том случае, если первый - не единственный в системе, в отличие от 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, PageDown, а в окне терминала - также и возможность скроллинга. Зато появляется знакомое до боли приглашение командной строки DOS

C:\>

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

   BOOT     BIN        512  12-07-99  10:59a
   COMMAND  COM      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
   VIM-5    3    DIR      12-07-99  11:02a
   BIN           DIR      12-07-99  11:02a
   DOC           DIR      12-07-99  11:02a
   HELP          DIR      12-07-99  11:02a
   EMACS         DIR      12-07-99  11:02a
   DOSEMU        DIR      12-07-99  11:02a
   AUTOEXEC BAT         99  12-07-99  11:02a
   CONFIG   SYS         94  12-07-99  11:02a
   EXITEMU  COM        292  12-07-99  11:02a
          17 file(s)       269177 bytes
                          7122944 bytes free

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

   .             DIR      12-07-99  11:02a
   ..            DIR      12-07-99  11:02a
   ASSIGN   COM      13867  12-07-99  11:02a
   ATTRIB   EXE       8609  12-07-99  11:02a
   BWBASIC  EXE     169774  12-07-99  11:02a
   C_LOCK   COM       3834  12-07-99  11:02a
   CAL      COM        900  12-07-99  11:02a
   CHKDSK   EXE      23510  12-07-99  11:02a
   CHOICE   EXE      12510  12-07-99  11:02a
   CLS      EXE       9026  12-07-99  11:02a
   COMMAND  COM      72192  12-07-99  11:02a
   COMP     COM       1285  12-07-99  11:02a
   COMPINFO EXE     113520  12-07-99  11:02a
   MCA      DAT      24080  12-07-99  11:02a
   PCI      DAT      47824  12-07-99  11:02a
   COPY     EXE      14219  12-07-99  11:02a
   CTMOUSE  COM       8836  12-07-99  11:02a
   CTMOUSEP COM       7443  12-07-99  11:02a
   PROTOCOL COM        365  12-07-99  11:02a
Strike a key when ready . . .

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

Разумеется, возможности dosemu не исчерпываются запуском штатных команд DOS. В частности, не составит труда запустить самораспаковывающийся архив, в виде которого обычно распространяются обновления BIOS. Неплохо, конечно, озаботиться загрузочной дискетой DOS. Однако если ее не окажется под рукой - не беда: командой SYS.COM можно создать некое ее подобие. Не знаю, насколько функциональна загруженная с нее система - не проверял, - но запустить перепрограмматор 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.linuxrsp.ru/) и В.Костромина (http://linux-ve.chat.ru/). Поэтому я на нем останавливаться не буду.

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

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

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

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

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

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

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

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

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

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

Возможно, что перед записью CD придется произвести некоторые предварительные действия. Почему? Напрямую Linux поддерживает записывающие/перезаписывающие устройства только с интерфейсом 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 возможна исключительно в режиме администратора; попытка запустить ее от лица пользователя (командой xcdroast) приводит к сообщению об отсутствии такого файла. После запуска программы возникает красочная заставка с буквами "X-CD-Roast" на фоне пламени (это к тому, что данные не горят?) в центре и серией кнопок слева: SCSI/IDEinfo, 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, то есть чистый ISO9660, поддерживающий имена с маской 8.3;
  • Unix Rock Ridge, обеспечивающий воспроизведение таких особенностей файловой системы Linux, как длинные имена, символические ссылки и т.д.;
  • Windows 95/NT - это тот формат, который известен в MS под красивым именем Joliet extensions, то есть ISO9660 с поддержкой длинных имен файлов.
  • 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.

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

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

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

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

В начало

Copyleft by
Alex Fedorchuk
http://linuxsaga.newmail.ru/