- předchozí článek - následující článek - obsah -

Linuxové noviny Únor 1998

Midnight Commander

Jacek Kopecký, Petr Staněk, 9. února 1998

Bývaly doby, a většina z nás si je pamatuje, kdy Unix-like operační systémy byly známy hlavně svou uživatelskou nepřívětivostí. DOS by na tom byl podobně nebýt takřka geniálního programu pana Petera Nortona, Norton Commanderu. V tom se nejspíš prvně objevila myšlenka mít na jedné obrazovce file manageru dvě okna s (nejčastěji) různými adresáři. Většina práce se soubory se přeci jen odehrává "někde" nebo "odněkud někam", takže dvě okna jsou právě dost. Všichni Nortona znali a používali. Mnozí si na něj zvykli. Poté se vyrojila spousta různých napodobenin (Volkov Commander, Manažer602, DOS Navigator, ...), k tomu se rozšířily Windows, a taky Linux. Ten se stal populární ne kvůli propracovanosti uživatelského rozhraní, ale kvůli stabilitě, standardnosti a kvůli tomu, že to není produkt společnosti Microsoft. Ale správa souborů zůstala nepřívětivá do doby, kdy přišel Miguel de Icaza (miguel@roxanne.nuclecu.unam.mx) s Midnight Commanderem a do prostředí UNIXů vnesl světlo Nortonovo.

Podrobnosti

Midnight Commander (MC) je, jak už je asi zřejmé, "nortonoidní" správce souborů. Má také menu nahoře, pod ním dva panely s výpisy adresářů, pod nimi tzv. Hintbar, kde se objevují různé tipy pro zpříjemnění/zefektivnění práce s MC, dále pak příkazovou řádku a pruh "tlačítek". Zobrazení menu, tlačítek a Hintbaru se dá vypnout, podobně jako mini-status v panelech. Ovšem v NC jsem neviděl možnost rozdělit si obrazovku nejen vertikálně, ale i horizontálně (panely nad sebou), a v obou případech třeba i asymetricky. To vše se dá najít v menu Options/Layout.

[ MC ]

Další rozšíření oproti NC je v možnostech zobrazení informací v panelech. Kromě Full a Brief (jen dva sloupce) módů je k dispozici ještě Long, kde se panel roztáhne na šířku obrazovky a pokud není aktivní, je překryt druhým. V takto dlouhém panelu se pak zobrazí informace ne nepodobné výstupu příkazu ls -la. Poslední možnost zobrazení je pak User, tu si uživatel může plně nadefinovat. Také mini-status (oddělená dolní řádka panelů) se dá nastavit. Já to například používám jen na zobrazení jména, které se někdy do horní části panelu nevejde, protože tam ještě chci mít velikost souboru a přístupová práva. Takové dlouhé jméno souboru se v případě nedostatku místa zobrazí jako několik znaků ze začátku, vlnovka, a několik znaků z konce.

Velmi užitečná, i když někdy možná nebezpečná, mi připadá možnost kopírování nebo přesouvání souborů na pozadí (tlačítko Background), zvláště v případě kopírování něčeho z Internetu přes FTP.

Podobně jako NC má MC vestavěný prohlížeč a editor souborů. Prohlížeč je poměrně chytrý, dokáže zobrazit soubory tak, jak jsou, ale i tak, jak by měly vypadat, třeba .html "prožene" lynxem, správně zformátuje i manuálové stránky. Může se samozřejmě splést, protože soubory rozeznává podle jména, nikoli třeba podle výstupu programu file. Pak máte ovšem stále možnost stisknout F8, to přepíná z filtrovaného do přímého zobrazení. Ještě je tu F9, to pro změnu přepíná tzv. formátování, tedy to, jestli MC interpretuje některé znakové sekvence používané například k zvýraznění textu v manuálových stránkách. Prohlížet soubory můžete po stisku klávesy F4 i v hexadecimálním módu, a tady je záludně schovaná možnost soubory v hexa také editovat (F2, pozor, jen v raw mode - F8). Tento prohlížeč je schopen hledat kromě normálního řetězce (F7) také regulární výrazy (F6 nebo / popřípadě ? pro hledání pozpátku). Pokračování hledání je buď F17 (Shift-F7 nebo Shift-F5), nebo příhodné n.

Ovládání

MC se ovládá podobně jako NC pomocí kurzorových kláves, funkčních kláves a myši. Hlavní klávesové zkratky jsou stejné s NC, tedy např. F5 pro kopírování a F8 pro mazání souborů (taky jste si všimli F8 pro kopírování ve Windows 3.11 File Manageru?), dále třeba Ctrl-u pro prohození panelů apod. Další MC-specifické zkratky jsou zjistitelné v menu, podle dokumentace mají mnoho společného s programy lynx, less a Emacs.

Myš je podporována na linuxové textové konzoli (gpm) a v xtermu. Pro provádění cut-and-paste je přitom třeba držet klávesu Shift.

I když jsou funkční i kurzorové klávesy v terminálech docela dobře definované, může se stát, že MC nepozná, co to uživatel mačká. Pak je tu možnost zvolit v menu Options položku Learn Keys a MC s používanou klávesnicí seznámit. Pokud ani toto nezabere, funkční klávesy se dají simulovat sekvencí Esc-číslo, třeba Esc-5 pro F5.

Virtual Filesystems

Už v NC nebo nějakém jeho pokračovateli jsem potkal možnost procházení obsahem různých archivů, jako je arj, rar, zip apod. V Midnight Commanderu kromě archívů s příponami tar, tar.gz, tgz, tar.bz2, rar, arc, lha a snad i zip můžete prohlížet obsahy deb a rpm balíků. Měl jsem možnost vyzkoušet jen rpm, to nabízí kromě souborů v balíku přímo obsažených navíc soubor HEADER a adresář INFO, kde jsou informace o balíku, a také skripty INSTALL a UPGRADE, jejichž spuštěním balík nainstalujete nebo upgradujete.

Kromě všech těchto lokálních virtuálních filesystémů MC ještě nabízí síťové připojení na FTP server nebo na svůj vlastní MC server. Na FTP se připojíte buď pomocí

cd ftp://[!][user[:pass]@]\
machine[:port][remote-dir]
nebo pomocí volby FTP link z menu pro daný panel. Všechny položky mezi ftp:// a poslední ] jsou dobře popsány v nápovědě. Zmíněný speciální MC server (mcserv) je asi zamýšlen jen jako náhrada pro FTP server tam, kde tento není k dispozici. Nenapadá mě totiž jeho jiné využití. Všiml jsem si jednoho rozdílu mezi FTP a mcserv. Soubory kopírované z FTP se cachují v /tmp a při jejich přenosu se v Hintbaru zobrazuje, kolik už bylo přeneseno, nic takového se neděje při komunikaci s mcserv.

Hlavní výhodou těchto síťových virtuálních filesystémů je asi to, že není třeba používat různé programy (třeba ftp a mc) pro stejné operace (kopírování souborů), navíc ve standardním ftp není možno rekurzivně přenášet adresáře.

Poslední verze MC navíc ještě umí na linuxovém ext2fs provést undelete: po

cd undel:/dev/<partition>
se zobrazí seznam čísel i-nodů, které lze obnovit. Bohužel jsou ztraceny původní názvy a je tak celkem pracné najít hledaný smazaný soubor.

MC a X-Window Systém

MC lze také s úspěchem použít při práci v X-Window. Jsou dvě možnosti, jak jej spustit. Možnost první je spustit jeho Tk verzi, zvanou TkMC. Je to celkem zajímavý projekt, ale dokud nebude TkMC stejně funkční jako MC, dám osobně přednost jeho textové verzi.

[ TkMC ]

"Textovou verzi" MC lze spustit v rxvt nebo v xtermu. Pak však hrozí nefunkčnost spousty oblíbených kláves. Částečně to lze řešit pomocí výše uvedených fines. Jinak je zde ještě možnost upravit patřičné definice kláves pro xterminál v souborech termcap a terminfo. V těchto databázích chybí velké množství funkčních kláves. Takto neúplné definice xterminálů dokáží značně znepříjemnit život.

Pokud je MC zkompilován se SLang knihovnou pro práci s obrazovkou, což je standardně, pak dokonce správně reaguje na zvětšení nebo zmenšení okna xtermu, což není podporováno v knihovně curses. Naštěstí je knihovna SLang přímo v distribuci MC.

Pokud MC nesprávně detekuje barevný xterminál a zobrazí se černobíle, dá se k barvě donutit parametrem -c, nebo zapsáním vašeho oblíbeného "barevného" terminálu do ~/.mc.ini, sekce [Colors].

Kompilace a instalace

Pokud instalujete z rpm (nebo snad i deb) balíků, nejsou žádné problémy. Bezproblémová je i kompilace a instalace z .tar.gz zdrojových balíků, hlavně díky tomu, že MC používá GNU autoconf. Zvláště jsem ocenil soubor INSTALL.FAST, ve kterém jsou krátce popsány všechny kroky pro kompilaci a instalaci, včetně nejdůležitějších parametrů skriptu configure.

MC je taky kompilovatelné ve Windows 95/NT, to jsem ale nezkoušel, místo toho jsem použil binární distribuci.

95/NT verze

Ačkoli je to verze pro Windows, používá textové okno, takže je vzhledově shodná s ostatními. Krátce popíšu jen rozdíly mezi verzemi pro Windows a UNIX, jak jsem si jich všiml:

  • win verze (zatím) nemá vfs,
  • protože ve Windows nejsou všechny disky v jednom stromu, je tam použito F11 a F12 pro přepnutí diskových jednotek,
  • Windows verze nepodporuje myš.

AIX

S velikým úspěchem u ostravské pobočky IBM používám MC na firemních sítích pod AIX-em. Velký údiv sklízí fakt, že je napsán pod GNU GPL, a tím hravě vytlačí své komerční konkurenty. Pokud nevlastníte překladače, nezoufejte, pro běžně provozované verze komerčních UNIXů najdete na Internetu již hotové binární distribuce.

Vady na kráse

I přes poměrně vysoké číslo verze jsou v Midnight Commanderu chyby a jiné vady na kráse. Tedy, není jich mnoho. První z těch, kterých jsem si všiml, se projeví, když mám rozepsaný nějaký příkaz a použiji menu. To pak funguje dokud nezmáčknu klávesu Enter. Ta místo vybrání položky menu spustí rozepsaný příkaz. Ovšem když se MC poté znovu objeví, nepřekreslí se správně a není vidět, že jsem pořád v menu. Opraví to až šipky doleva či doprava.

Dále se mi od nějaké doby (nevím, od jaké verze) špatně překresluje rotující lomítko v pravém horním rohu obrazovky, lépe řečeno ono tam často zůstane i když už není potřebné. Při Ctrl-l se ovšem obrazovka překreslí správně, to ale nefunguje v menu (viz předchozí chyba).

Hexadecimální editor a prohlížeč také potřebují dodělat, podle mých zkušeností jsou trošku "fuzzy".

Stoprocentně nefunguje ani mcserv, když jsem jej spustil jako normální uživatel, ani za nic nechtěl přijmout mé heslo, jako root mi to jednou fungovalo.

Následuje pár věcí, které je možno dodělat: postup instalace rpm balíků by mohl být zobrazován v okně stejně jako třeba postup kopírování; snad by se také dalo nějak urychlit načítání obsahů adresářů v FTP, které dost trvá zvláště při pomalejším připojení, například modemem; kopírování/přesouvání souborů na pozadí by mohlo nějak ukazovat, co už má a co ne.

Další věc může občas mást: pokud si uživatel nechá někde v panelu zobrazovat velikost souborů a ta se nevejde do stanoveného sloupce, pak se místo v bytech zobrazí v kilobytech nebo i v megabytech, s připojeným K nebo M. Pak se například velikost 1854672 na první pohled jeví řádově větší než 23657K.

Síťové zdroje

Hlavní WWW stránka o MC je na adrese http://mc.blackdown.org/mc. Odtamtud je také možnost si MC opatřit, a to buď ve zdrojových textech pro kompilaci, nebo v binárních distribucích pro většinu podporovaných systémů. V ČR je MC podle manuálové stránky na adrese ftp://sunsite.mff.cuni.cz/GNU/mc.

Na úpravě xtermu pro MC a češtinu pracuje Richard Šputa a výsledek bude dostupný na serveru LINUX-CZ.

Na adrese majordomo@roxanne.nuclecu.unam.mx je dostupných několik konferencí o MC: všeobecná mc, táž v digest formě je mc-digest, hlavní oznámení se vyskytují v mc-announce, nejčerstvější záplaty jsou posílány do mc-patch (je jich tam prý 4-8 týdně), a diskuse o vývoji MC probíhá v mc-devel.

Závěr

V různých linuxových konferencích se občas vyskytne dotaz na filemanagery v X-Window. Jednou z prvních odpovědí je zpravidla "MC v xtermu". Něco na tom bude... *


- předchozí článek - následující článek - obsah -