Календар

August 2007
M T W T F S S
« Jul   Sep »
 12345
6789101112
13141516171819
20212223242526
2728293031  

Midnight Commander, леко носталгично

Още от времето на DOS любима патерица ми беше една програма XTree. Оказа се, че я има и за Unix. Покрай XTree-то често използвах и Norton Commander (нали знаете лафа: “Гледам аз: отдясно диск “C”, и отляво диск “C”. И за какво ли са ми два еднакви?! Я, да взема да изтрия единият….) не защото ми харесваше, ами защото колегите не излизаха от него по цял ден и просто нямах избор – трябваше да свиквам. Всъщност, подобни програми в последствие се превръщат от патерици в инвалидни колични, било заради удобството, което предлагат, било заради чисто човешкият мързал да се използва нещо друго. Затова и аз, често използвам в конзола при x-образните ОС Midnight Commander-a – свободният проект, почти пълен аналог на досовският си дядо.Традиционно Midnight Commander-a в RedHat базираните ОС може да се използва за бърза смяна между директориите – особено, ако в единият панел покажете дървото на директориите. Незнайно защо, тази функция при Debian клоновете е точно обратното – там mc-то се връща точно оттам, откъдето е извикано. Това поведение, лично мен не ми допада, затова на всяка (Debian like) машина на която работя правя следното:

vi ~/.bashsrc

и добавям в краят на файла (или в секция alias)

alias mc=’. /usr/share/mc/bin/mc-wrapper.sh’ или

или за по-мързеливите, всичко на един ред:

echo alias mc=’. /usr/share/mc/bin/mc-wrapper.sh’ >> ~/.bashrc

За тази “магия” стои параметърът “-P” на mc-то за запомняне на текущата директория във външен файл. Ето и какво точно прави тази опаковка mc-wrapper.sh:

MC_USER=`id | sed ‘s/[^(]*(//;s/).*//’`
MC_PWD_FILE=”${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$”
/usr/bin/mc -P “$MC_PWD_FILE” “$@”
if test -r “$MC_PWD_FILE”; then
MC_PWD=”`cat $MC_PWD_FILE`”
if test -n “$MC_PWD” && test -d “$MC_PWD”; then
cd “$MC_PWD”
fi
unset MC_PWD
fi
rm -f “$MC_PWD_FILE”
unset MC_PWD_FILE

ВНИМАВАЙТЕ, ако правите Copy&Paste от екраните по-горе. Темите на шрифтовете понякога сменят апострофи и кавички или обратен апостроф, с каквото те си решат.

Допълнителни ресурси: User Guide и FAQ.

9 comments to Midnight Commander, леко носталгично

  • Пакетът в Дебиан отговаря на стандартното поведение на `mc’, както са решили разработчиците му. Опцията `-P’ си е опция все пак, както и нестандартния начин за използването й. В README.Debian това е обяснено:

    Because of some issues a method to stay in the last working directory after exit has changed with 4.6.0. See the description of the -P option in the Options section of the manual and new wrapper scripts in /usr/share/mc/bin/.

    Като си компилираш `mc’ от изходния код без кръпки, прилагани от дистрибуцията, ще забележиш, че поведението на програмата (поне в това отношение) е същото, както в Дебиан.

    Навярно от Федора са сметнали, че това е нещо полезно и заслужава да бъде активирано по подразбиране. Аз лично никога не съм ползвал тази функционалност и никога не ми е трябвало подобно нещо (ползвам mc вече 12 години, макар да не съм напреднал потребител).

    Така че по-правилният въпрос е “Незнайно защо в дистрибуциите, базирани на Ред Хат, mc не се държи стандартно.”

  • Гери

    Хе, колко ме радва тази статия! 😀
    В момента използвам Slackware и Ubuntu (dapper), и при двете не мога да работя без Midnight Commander. За мен е изключително ценен и не само за бързата смяна на директории, но и за копиране и местене, улеснява ме с правенето и редактиране на symlinks, а понеже не ми се запаметяват команди (едно ли е, че да го запомниш :), F9 и после chmod и chown също много ми помагат.

  • @Явор: Ей, не можа да се удържиш от малко пропаганда! Удари 2-3 камъка по Fedora. 🙂 Прав си за забележката. Все пак, съгласи се, че моето изречение е съвсем правилно: аз не знаех, че “нормалното” поведение на mc е да не сменя директориите, просто защото почти винаги съм го ползвал от пакет, а не чрез компилиране.

    @Гери: има и още нещо, което не е много ясно и затруднява потребителите. mc не работи с функционалните клавиши в gnome-terminal, затова аз използвам ESC последователностите. Примерно с F10 влизаш е менюто на терминала, което е гадно. Затова натискаш ESC+0 (нула) и ефекта е същият. Аналогично, ESC+1 e F1 и т.н. Със сигурност това може да се настрои от някъде, но поне за момента ме мързи да изследвам.

  • Не знам откъде си останал с това впечатление. Отдавна спрях да препоръчвам Дебиан и ако на някой му се налага да избира между двете, бих го посъветвал да се спре на Федора (защото е на път да стане свободна дистрибуция).

  • @Гери: Много удобни са и комбинациите:
    Ctrl+X и C – chmod
    Ctrl+X и O – chown
    Ctrl+X и S – създаване на symlink
    Ctrl+X+S – редактиране на symlink
    Alt+S – бързо търсене
    Shift+F5 – копиране с редактиране на името
    Shift+F6 – преместване с редактиране на името

    Аз вече трудно ползвам MC без тия и още няколко подобни клавиши 😉

    @Явор: Защо трябва в нещо толкова конкретно като usability на MC да намесваме обвиненията към Дебиан? Аз мога да кажа точно обратното и пак няма да сме по темата на Владо. Нека не говорим за Debian vs FSF, най-малкото Владо е федораджия и не го касае 😉

  • Мама му стара на този шиб*** сек. код. За трети път пиша тука в опита си да успея. Направо съм бесен.

    За това този път без обяснения:
    gnome-terminal -> Edit -> Keyboard shortcuts … махаш белязките на опциите:
    – Disable all menu access keys
    – Disable menu shortcut key

    После на mc -то можеш и в гноме -то да си използваш F1-F10 … особено F8 …

    В случай, че така ти е по – удобно … аз пиря Старопрамен 🙂

  • Опааа,
    не махаш, а слагаш :-)…

  • Слагаш очила ли?! 🙂 По-просто нещо от тоя security code няма!
    Както и да е… мерси за подсказката.

  • Благодаря за статията.
    1 час рових из нета, докато реших да потърся и страници на български и решението излезе на първо мясот 🙂

    (странно решение на разработчиците да не направят смяната на директории по подразбиране. Така се губи поне 60% от функционалността на mc )

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>