О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

05.09.2008

Сироты комамндира Нортона

2001 г

-Кто твоя мать, рядовой Петров?
-Коммунистическая партия Советского Союза!
-Кто твой отец?
-Вы, товарищ командир!
-Какова твоя заветная мечта?
-Сиротой бы остаться...
Из старого советского анекдота

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

Должен сознаться, что на заре моего приобщения к Linux'у без mc я не обходился: именно он, наряду с KDE, помог сломать психологический барьер перед командной строкой, выросший за годы тлетворного влияния Windows.

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

Первое разочарование в mc постигло меня на стадии приобщения к FreeBSD. Если его версия для Linux могла носить имя сына коммандера Нортона с гордостью, то FreeBSD-версию иначе чем командирской сироткой язык назвать не поворачивался (речь идет о 2001 годе - ныне былые недостатки Free'шной версии изжиты, подобно пьянству при Михал Сергеиче). Начать с того, что по непонятным причинам вызывался он там не волшебной аббревиатурой mc, а весьма неуклюжим и непривычным буквосочетанием midc. Что, конечно, решалось просто введением дополнительного псевдонима в профильном файле, например, для csh

alias mc midc

однако все равно раздражало. Но это еще полбеды. Далее обнаружилось отсутствие встроенного редактора: если соответствующая опция в mc (пардон, в midc) была включена, по нажатию на F4 вызывался не кто иной, как vi.

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

Но с было трудно примириться любому старому командирскому комбатанту - так это с непотребным поведением клавишных комбинаций по умолчанию. Так, комбинация Control+Enter отнюдь не помещала файл под курсором в командную строку, а Control+O вместо отключения панелей вызывала просто немедленный (и - без предупреждения) выход из midc. И Midnight Commander под FreeBSD был мной окончательно заброшен.

Во избежание недоразумений повторяю - все сказанное относится именно к midc под FreeBSD. В Linux-своей версии mc - это мощный, полнофункциональный файловый менеджер, ничуть не уступающий FAR'у для Windows. Да и под FreeBSD, по сведениям Андрея Лаврентьева (http://unix1.jinr.ru/~lavr/), умолчальные его недостатки могут быть ликвидированы путем пересборки с соответствующими настройками, однако об этом я узнал позднее.

И тут наступил психологический момент вспомнить о другом коммандерском отпрыске для FreeBSD - Demos Commander'е (или, сокращенно, deco). Получившего свое имя, разумеется, не от древнегреческих демократов, а от пионера российского провайдерства (автор - Serge Vakulenko). И конечно, ничего специфически FreeBSD'шного не содержащего: просто в дистрибутивах Linux он обычно не встречается, а во FreeBSD (и - OpenBSD также) входит стандартно, как в виде пакета, так и порта.

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

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

Однако если набраться некоторого терпения, начинаешь понимать всю сермяжную правду, заложенную в deco. Во-первых, поведение клавишных комбинаций в нем привычно (пользователю mc) и предсказуемо. Во-вторых, возможности настройки его не столь уж бедны, как кажется на первый взгляд. Есть возможность создания пользовательского меню (вызываемого по клавише F2) - неотъемлемого атрибута "командирских" файловых менеджеров. К любым типам файлов, определяемых по маскам, можно привязать не только команды, но и сколь угодно сложные их конструкции. А самое главное - в deco обнаружился замечательный режим командной строки.

Включение этого режима (через меню или комбинацией клавиш Control+P) приводит к тому, что действия в панелях становятся невозможными, но зато открываются самые широкие возможности манипулирования непосредственно командами оболочки. После чего становится ясным, почему по умолчанию панели deco свернуты на половину экрана (что, впрочем, легко изменить - включив через меню или комбинацией Control+F режим Full Screen: нижняя его часть, в сущности, представляет собой обычное терминальное окно.

Сам по себе deco предлагает на выбор одну из двух встроенных командных оболочек - /bin/sh и /bin/csh. Правда, интерактивные их возможности очень бедны: не поддерживаются ни пролистывание истории команд (хотя таковая само по себе и поддерживается), ни автодополнение, ни псевдонимы, ни прочие давно уже привычные радости. Попытки настройки оболочек также остаются безуспешными. по крайней мере, никакие мои манипуляции с профильными файлами (типа ~/.csh или ~/.profile) эффекта не возымели ни малейшего. Честно говоря, для меня так и осталось загадкой, откуда deco черпает сведения о переменных оболочки и окружения.

Тем не менее, работа в режиме командной строки оказывается весьма комфортной. При этом начинаешь понимать, что программа эта, в сущности, никакой не файловый менеджер; или, мягче сказать, эта ее функция - лишь дополнение к основной, а именно: визуализации действий в командной строке. То есть именно то, что восхитило меня в свое время в Konqueror'е - файловом менеджере-браузере из KDE. Кстати сказать, в экранной документации deco так и называется - visual shell, а отнюдь не файловый менеджер.

Конечно, хотелось бы, чтобы терминальное окно под визуализационными панелями использовалось наиболее эффективно. То есть - подключить к deco какую-либо мощную современную командную среду (типа bash, tcsh или zsh). Однако возможности для этого не предусмотрено: так называемые /bin/sh и /bin/csh встраиваются в него статически, и изменить это мне не удалось.

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