?

Log in

No account? Create an account

файловые менеджеры - Excelsior

Sep. 8th, 2011

12:54 am - файловые менеджеры

Previous Entry Share Next Entry

Сегодня по пути в универ прочитал статью Мигеля де Икасы Learning Unix. Как раз то, что я хотел найти в посте ищу книжку про юникс/линукс. В сжатом виде аффтар описывает свое видение unix way. Субъективно, opinionated - то, что надо, жаль мало. Пусть даже с непонятно откуда взявшейся рекламой платного курса по слепой печати. Впрочем, сегодняшний пост не об этом.

Когда я читал фрагмент статьи, в котором идет речь про mc (кстати, Мигель де Икаса, оказывается, является автором mc, омг!), у меня что-то щелкнуло в голове, и я, наконец, нашел для себя смысл в посте ребе vp про Total Commander. Напомню краткое содержание: "А вот у нас на работе эта программа запрещена. Если кто-то из работников будет замечен за ее использованием - сразу увольнение. Основная идея файлового менеджера - ускорение работы с файлами, с перенаправлением вывода, с выводом на консоль, с подстановкой параметров в командную строку и т.п. Ни одной задачи эта софтина не решает, а мозг людям, кто ею пользуется."

Сразу признаюсь - основной программой у меня на компе долгое время был тотал.

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

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

***

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

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

Погрустил я на эту тему и забил. Нашел для линукса какой-то тоталоподобный файловый менеджер и стал юзать его вместе с консолью. Если сказать честно, нихрена это не удобно. Смотришь на список файлов в этом самом файловом менеджере и действительно быстро понимаешь: "оба-на, зафигачу-ка я команду delitec для вот этих двух scala-файликов из двадцати лежащих в папке". Набираешь в строке ввода менеджера "delitec file1 file2", нажимаешь ENTER - окошко появилось на секунду и пропало. Что происходит - неизвестно. Брр. Бесишься про себя, в строке ввода набираешь "$TERM", который стартует в текущей директории, а там уже вбиваешь, что надо. Лишние телодвижения, но что поделать. Как вариант, можно скачать плагинчик, который по отдельной просьбе будет открывать $TERM за тебя, но и с этим есть косяки. Что, если внезапно хочется посмотреть список файлов в консоли? Еще один плагинчик искать?

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



Что видит на картинке ученик класса по информатике? Меню, две панели с файлами, какую-то строчку ввода и кнопки. Ессно, основной фокус внимания на файлы - сознание автоматически воспринимает их как главное, что есть на экране. Ну причем здесь строчка ввода, да и нафига она вообще? А еще тема, можно нажать Ctrl+O и появится какая-то черная хрень на весь экран. Во смеху-то будет, если сделать так челу за соседним компом.

Что на самом деле находится на картинке? Шелл, командная строка которого находится внизу, а основное полотно (предыдущие команды и их вывод) спрятано. Кроме того, на экране также находятся два дополнительных виджета: список файлов текущей папки шелла и список файлов какой-то другой папки.

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

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

А на деле ведь переход в папку описывается простой командой cd. Нравится какая-то папка - не вопрос. Сделай алиас для соответствующего cd и юзай на здоровье. Часто бываешь в папке Downloads - нафигачь алиас dl для "cd /foo/bar/very/long/path/Downloads" и набирай dl, чтобы быстро попасть, куда надо. Набираешь dl в шелле, а, в честь перехода в новую папку, соответствующий виджет автоматически обновляет список файлов. Всяко быстрее, чем тыркать мышкой, и не хуже, чем нажимать C-d <номер закладки>. Но что главное - логичнее.

2) Скажем, файловую систему мы набраузили и теперь надо искать файлы по имени. В модели номер 1 нужно реализовать логику поиска, сваять уи, реализовать концепцию виртуального списка файлов, который не соответствует никакой реально папке в файловой системе. Я специально упоминаю детали реализации в посте про юзабилити потому, что эти детали влияют не только на эффорты программиста, но и на мысленную картину, которую для себя строит пользователь.

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

3) Часто бывает необходимо не только посмотреть аутпут какой-то команды, но также и свериться с результатом выполнения некоторой программы в прошлом. В рамках модели номер 2 для этого достаточно нажать тот самый хоткей Ctrl+O и вся история консоли перед глазами.

В модели номер 1 пользователь должен сам заботиться о сохранении аутпута важных программ. Особенно доставляют такому пользователю "нехорошие" программы, которые выполняются в консольном режиме и автоматически закрываются по окончанию работы. Для них надо ручками открывать окошки консолей, добавлять pause в бат-файлы или readline в программы. Чего только не придумаешь для борьбы с ветряными мельницами.

***

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

Comments:

Page 1 of 2
<<[1] [2] >>
[User Picture]
From:dizel_by
Date:September 7th, 2011 10:58 pm (UTC)
(Link)
Когда кто-то будет говорить про эффективную работу в тотале или про то, что двухпанельные файловые менеджеры не нужны, я буду без лишних разговоров давать ссылку на этот пост :)
(Reply) (Thread)
From:ex_juan_gan
Date:September 7th, 2011 11:41 pm (UTC)
(Link)
mc: F3 F4 F2
F9 find something
compare dirs
F5
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 8th, 2011 06:03 am (UTC)
(Link)
Пока что самый загадочный камент. Я не понял, о чем тут - расскажите, пожалуйста.
(Reply) (Parent) (Thread) (Expand)
From:(Anonymous)
Date:September 8th, 2011 12:10 am (UTC)

Total

(Link)
Я много работаю с коммандной строкой и все же считаю TC величайшей софтиной человечества. Попытаюсь обосновать его защиту, отбивая следющие нападения:
1. "ускорение работы с файлами" - видеть что и куда копируешь, выделять курсором (вместо набирания имен), всегда видеть очередь комманд IO
2. "с перенаправлением вывода, с выводом на консоль" - точно также делается, как и с консолью, только проще команды вводить (Ctrl+Enter).
3. "с подстановкой параметров в командную строку" - та же фигня.

В крайнем случае командой "cmd" вызываем консоль на текущей папке и ваяем. Времени это занимает копейки.
(Reply) (Thread)
[User Picture]
From:lionet
Date:September 8th, 2011 05:53 am (UTC)

Re: Total

(Link)
1. В командной строке имена можно не набирать целиком, есть же клавиша <tab>.
2. В консоли проще: просто Enter.
(Reply) (Parent) (Thread)
[User Picture]
From:lionet
Date:September 8th, 2011 12:45 am (UTC)
(Link)
Ctrl+O был в Norton Commander'е ещё, jfyi, откуда ноги растут.
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 8th, 2011 05:52 am (UTC)
(Link)
Ага, я поэтому и упомянул этот хоткей - чтобы пост был не терял в общности. В содержательной части креатива ведь вообще нет упоминания конкретных файловых менеджеров группы 2, просто скриншот от mc взял.
(Reply) (Parent) (Thread)
[User Picture]
From:Дмитрий Макаров
Date:September 8th, 2011 03:12 am (UTC)
(Link)
Так ведь можно запустить shell в буфере (и даже несколько если буфер переименовать) Emacs'a, чем это хуже С-о?
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 8th, 2011 05:56 am (UTC)
(Link)
Ну, емакс - отдельная песня.

Я подозреваю, что, когда у меня найдутся лишние пару дней, то подпиленный sunrise commander окажется наиболее эффективным менеджером, ибо я уже пару раз искал в mc возможность чутка допилить его в стиле емакса =) кроме того, чисто философски, интегрированные IDE и файловый менеджер - ультимейт комбинация.

Но пока что у меня к емаксу есть вопрос: как ускорить стартап? Тот же CEDET запускается слишком долго (секунды 3-4).
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:Дмитрий Макаров
Date:September 8th, 2011 03:17 am (UTC)
(Link)
кстати шрифт в Far легко поменять.
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 8th, 2011 05:57 am (UTC)
(Link)
Ага, у ребе, в каментах к слинкованному выше посту даже были точные инструкции, как это сделать, но просто это первое, что бросается в глаза, поэтому я заострил внимание на этом моменте.
(Reply) (Parent) (Thread)
[User Picture]
From:cd_riper
Date:September 8th, 2011 03:36 am (UTC)
(Link)
никакое Ctrl-O того не стоит
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 8th, 2011 06:01 am (UTC)
(Link)
Можно развернуть мысль? Понимаю, что пост крайне философского характера, без адекватных юз-кейсов, поэтому сложно в его рамках вести конструктивное сравнение. Но все же - что я упускаю в своих рассуждениях?
(Reply) (Parent) (Thread) (Expand)
(Deleted comment)
[User Picture]
From:tonsky
Date:September 8th, 2011 07:02 am (UTC)
(Link)
Респект за разложение по полочкам. Раньше к тоталу у меня было чисто интуитивное неприятие, не рефлексировал на эту тему.
(Reply) (Thread)
[User Picture]
From:itismow
Date:September 8th, 2011 07:59 am (UTC)
(Link)
>>Основной киллер-фичей тотала для меня было наличие закладок
Основное, ради чего я использою tc это:
* как уже тут упоминалось, возможность вызова для файла системного/контекстного меню;
* фоновые копирование и работа с архивами.
Ну и да, правда, консоли запускаю из него очень и очень часто.
(Reply) (Thread)
[User Picture]
From:__hans
Date:September 8th, 2011 09:40 am (UTC)
(Link)
>> работа с архивами.

Оно уже умеет распаковывать *.tar.gz без двойного захода? Единственная полезная фича в tc - возможность делать grep по файлам внутри архива. Но как я понял из разговорив, фича весьма специфичная и нужна их моего окружения только мне.
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:__hans
Date:September 8th, 2011 09:44 am (UTC)
(Link)
>> Основной киллер-фичей тотала для меня было наличие закладок

Откройте для себя команды dirs, pushd, popd. Фактически те же закладки, только для чистого shell-a.
(Reply) (Thread)
[User Picture]
From:justy_tylor
Date:September 8th, 2011 10:25 am (UTC)
(Link)
Total Commander делается для тех, кому вообще не нужна консоль. При типичном офисно-медийном использовании "аутпута важных программ" не бывает.

А уж если припекло, да под виндой, то Far. Но, опять же, не для всего, временами приходится и Console 2, с такими-то матюгами.
(Reply) (Thread)
[User Picture]
From:legolegs
Date:September 9th, 2011 05:23 pm (UTC)
(Link)
>Total Commander делается для тех, кому вообще не нужна консоль

поправочка: для тех, у кого нет консоли. В отсутствии приличной консоли (со всеми удобствами из (/usr)?(/local)?/s?bin) тотал очень даже нужен.
(Reply) (Parent) (Thread)
[User Picture]
From:npocmu
Date:September 8th, 2011 11:18 am (UTC)
(Link)
Я вот использую и тотал и фар одновременно. И не мучаюсь проблемой выбора идеального файлового менеджера
(Reply) (Thread)
[User Picture]
From:tzirechnoy
Date:September 9th, 2011 09:17 am (UTC)
(Link)
>татью Мигеля де Икасы Learning Unix. Как раз то, что я хотел
> найти в посте ищу книжку

Тут надо напомнить, что Мигель дэ Иказа -- автор трёх уродливых, совершэнно не-юниксовых, софтин: mc, GNOME, Mono. Потому есть глубокие подозрения, что мигель-днказа каким-то образом разъедает мозг, после чего нормально писать под юникс человек становится неспособен.
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:September 9th, 2011 09:23 am (UTC)
(Link)
Дык я ж не говорю, что он крут или не крут - просто изучаю юниксовый фольклор. Это наталкивает на новые мысли. Поэтому мне так и понравился пост Мигеля. Почитаешь такое, подискассишь - узнаёшь гораздо больше, чем из книжек.
(Reply) (Parent) (Thread)
[User Picture]
From:dimitrykakadu
Date:September 13th, 2011 11:45 am (UTC)
(Link)
Да я сам помню как сидел на TotalCommandere
потом с появлением дебиана у меня появилась консолька и ломки по нему вроде не было.
Сейчас консолькой в основном справляюсь
МС меня отпугивает ибо Я никак не могу запомнить как сделать автодополнение в консольке mc. Сколько не пробовал читать мануал, ничего не автодополнялось.
В тоже время я совсем не могу запомнить как делать grep текста во всех файлах. Поэтому захожу в mc и жмакаю М-?. Фигня какая-то получается, надо будет выучить кнопки какие надо нажимать.
(Reply) (Thread)