Хотя и существует большое количество различных файловых менеджеров, я предпочитаю Midnight Commander. Почему? Все просто – низкие требования к системным ресурсам, не менее важен и тот факт, что данная программа входит практически во все дистрибутивы, а при возникновении критической ситуации, когда X-Window не загружается, наряду с текстовым редактором vi|nano|ee остается последним средством, чтобы все поправить. Данная статья поможет разобраться, что к чему при использовании mc. Пользователи, которые до этого работали в ДОС или часто использовали FAR в своей работе, найдут здесь много знакомого, но есть и некоторые особенности присущие среде Linux.
Запускается программа путем набора mc в командной строке. Если ничего не произошло, найдите каталог куда установлена программа командой или find / -name ‘mc’ (как правило, программа находится в /usr/bin/mc). Установка в Ubuntu стандартна.
; $ sudo apt-get install mc
После запуска возникают две панели сине-белого цвета (как правило), вверху которой расположена строка меню, и подсказка к горячим клавишам внизу. Если, чего то из вышеописанного нет, или наоборот по вашему мнению, является лишним, то зайдите в ‘Настройки (горячая клавиша F9) – Внешний вид’ и уберите (добавьте) то, что считаете нужным. Например, на небольших мониторах можно выключить клавиши-подсказки внизу, так вы быстрее их запомните, мышкой все равно как-то долго до них добираться, а если что-то позабудете, то по клавише F9 в пункте меню ‘ Файл’ находятся все необходимые операции. При правильной локализации системы все надписи, а также вводимый и выводимый текст, отображаются в русской кодировке, если же что-то не так, то проверьте, чтобы были установлены ‘ Полный 8-ми битный ввод ‘ и ‘ Полный 8-ми битный вывод ‘ в подпункте ‘ Отображение символов ‘ .
Каждая панель состоит из списков файлов каталога в котором вы находитесь и строки мини статуса (которая впрочем тоже отключается). Формат вывода информации о файлах можно изменить в пункте «Правая (левая) панель – Формат списка». Существует четыре варианта представления:
· Стандартный (full) – отображается только имя размер и время последнего изменения
· Укороченный (brief) - только имя (но зато в две колонки и соответственно вдвое больше файлов)
· Расширенный (long) – панель занимает весь экран, доступна также информация о владельце и группе, к которой принадлежит файл правах доступа и количестве жестких ссылок на файл (ls -l)
· Определенный пользователем (user) - пользователь сам определяет формат вывода
Чтобы не перечислять все, что есть во встроенной справочной системе, скажу, что я пользуюсь таким форматом
half type,name,|,nlink,|,name,|,mode,|,size
half – половина экрана, type – отображает тип файла (/ – каталог, @ – ссылки, * – исполняемые файлы и т.д.), name – имя файла, owner – владелец, mode – права доступа в числовой форме (perm – для вывода в буквенной), size – размер файла, знак ‘|’ означает вертикальную черту. Здесь же таким же способом можно задать и свой собственный формат для строки мини-статуса.
Отображение списка файлов может производиться в соответствии с одним из следующих правил сортировки: без сортировки, по имени, по расширению, по времени модификации, по времени доступа, по времени изменения, по размеру и по номеру узла (inode).
При этом можно выбрать обратный порядок сортировки (reverse). Все это можно изменить в подпункте «Порядок сортировки» соответствующей панели. А в пункте меню «Фильтр», можно задать шаблон для вывода файлов, если вы хотите чтобы отображались файлы какого то определенного типа. Одну панель можно настроить для вывода интересующей вас информации. Например выбрав режим «Быстрый просмотр» (Quick View) выводится содержимое файла, в режиме «Дерево»(Tree) можно увидеть в виде дерева каталогов место где находится файл, ну а в режиме «Информация» в другой панели выводится вся информация об интересующем вас файле. В режимах «Сетевое соединение» и «FTP-соединение» можно работать с файлами на удаленных компьютерах точно также, как с локальными. Есть еще вверху на панели три кнопки «<», «v» и «>» предназначены они для перемещения по дереву каталогов с помощью мыши, по нажатию «v» высветится история перемещения.
Кстати, если у вас запущен сервер gpm, то проблем с мышью быть не должно, и все равно в каком режиме вы работаете в консоли или в эмуляторе терминала xterm или вообще на удаленном компьютере. Для того чтобы вырезать\вставлять текст с помощью мыши необходимо при этом удерживать клавишу <Ctrl> (но в эмуляторе терминала это не работает).
Как и положенно любому файловому менеджеру с помощью mc можно копировать, перемещать, удалять файлы. Для того чтобы выделить файл нужно щелкнуть по нему правой кнопкой мыши, снять выделение можно проделав эту операцию повторно. С помощью клавиатуры все это можно проделать нажатием <Ctrl+t> либо <Insert> , а группу файлов можно выделить нажав <Доп +> снять выделение – <Доп. ->. Операция «Инвертировать отметку» позволяет снять выделение с уже выделеных файлов и выделить те, которые не были до этого выделены. А «Снять отметку» ( \) позволяет снять подсветку с уже выделенного файла. Хочу также обратить ваше внимание, что при выборе группы файлов через » Отметить группу» можно воспользоваться регулярными выражениями. При этом знак «* » означает ноль или любое количество символов, знак «?» означает один любой символ, а чтобы указать на группу знаков один из которых должен присутствовать в искомом файле необходимо заключить эти знаки в квадратные скобки. Например следующий шаблон выведет все файлы от test1.gz до test9.gz: test[1-9].gz. Кроме этого выделив группу файлов можно также утановить права доступа для всех сразу, как при использовании команды chmod, а также изменить владельца файла или группу к которой принадлежат данные файлы (chown и chgrp соответственно). Все это доступно через подпункты «Права доступа» (Ctrl+x; c) и «Владелец/группа» (Ctrl+x ; o) меню «Файл». Здесь же в подпункте «Права (рассширеные)» возможно редактирование вышеописанного в одном месте. Естественно вы должны помнить, что если установить нужные права на интересующий вас каталог , то это не значит, что все файлы находящиеся в нем будут иметь такие же права, для этого нужно заходить в каждый каталог и устанавливать для файлов права доступа отдельно или воспользоваться командой chmod, chown, chgrp с флагом -R.
Для выделенных файлов можно установить жесткую (Ctrl+x ; l) либо символическую ссылку (Ctrl+x; s). Так как в этом вопросе постоянно путаются, то внесу необходимую ясность. Сначала о жестких ссылках. В Linux как и во всех Unix‘ax все файлы (и каталоги кстати тоже) имеют свой номер, для каждого создается узел (inode) в котором хранится вся служебная информация состоящая примерно из 13 пунктов, для имени в этом самом inode места не нашлось и поэтому каждый узел связывается с именем с помощью ссылки, в виде «имя файла – номер узла». При обращению к файлу, по связке название-узел оттыскивается нужный inode и на название система больше не обращает абсолютно никакого внимания, поэтому кстати можно запустив программу тут же переименовать файл или удалить его, в Windows вам этого не дадут сделать сославшись на то, что файл занят приложением. Это и называется жесткой ссылкой. Еще один интересный момент ведь никто не мешает создать две и более жестких ссылок на один и тот же узел, этот факт широко используется в системе. Для примера сравните характеристики файлов gzip и gunzip, такие пункты, как положение на диске, размер и т.д. одинаковы отличается только название и по сути мы запускаем одну и ту же программу. Как же, спросите вы, ведь эти две программы предназначенны для разных целей, а все очень просто, (кто программировал для консоли тот поймет сразу ) одним из параметров который передается при запуске программы, является название, отсюда программа и узнает, что же она должна собственно делать. Кстати в Unix‘ax программами удаления удаляется не файл, а ссылка на узел, а файл удаляется автоматически когда на него нет ни одной ссылки и он не используется ни одной программой. Единственное ограничение на использование жестких ссылок это то, что все они должны находится на одном диске потому, что связи не могут пересекать границ устройств. Символическая ссылка это особый вид файла в котором содержится информация о расположении исходного файла, который в свою очередь может находится на любом диске или компьютере. При удалении исходного файла символическая ссылка становится бесполезной, но можно создавать символические ссылки на несуществующий или временно недоступный файл, да в качестве аналога символической ссылки могу привести ярлыки в Windows.
При копировании, перемещении, переименовании файлов можно изменять имена используемых файлов. Для этого необходимо задать маску как для исходных так и выходных файлов. Эта функция бывает полезна когда файлы с таким именем в конечном каталоге уже есть или могут там быть, либо вы хотите сменить расширение (.MP3 на .mp3, .jepg на .jpg, .tar.gz на .tgz), или добавить префикс .old или .bak к названию файла.
Например при указании маски источника «*.tar.gz» и маски приемника «*.tgz» то все файлы с расширением .tar.gz будут переименованы в *.tgz. В одной из конференций я нашел такой способ сделать это с помощью команды find
$find -name \*.tar.gz -exec sh -c ‘n=`echo {} | sed s/..*$// `; mv $n.tar.gz $n.tgz’ \;
Как видите для каждого файла вызывается командный интерпретатор и поэтому скорость оставляет желать лучшего, да еще и не сразу понятно для чего все это, а с помощью mc все наглядно и самое главное быстро.
Если воспользоваться в маске приемника «\u» или «\l» следующий символ имени будет преобразован к верхнему (в первом случае) или к нижнему (во втором) регистру. При использовании знаков «\U» или «\L» то все следующие за ним символы будут преобразованы к соответствующему регистру. Подробнее смотрите в утилитах grep, sed, awk, и программирование на shell. Есть еще несколько опций которые влияют на операции копирования и перемещения. Так опция «Разименовывать ссылки» (Follow links) определяет будут ли при копировании жестких и символических ссылок создаваться ссылки или копироваться сами файлы. А при включении опции «Внутрь каталога, если есть» (Dive into subdirs) при копировании каталога в конечном каталоге будет создаваться подкаталог с именем копируемого не зависимо от того есть ли он там или нет (если есть то подкаталог создается на уровень ниже). При включении опции «Сохранять атрибуты» (Preserve attributes) все копируемые/перемещаемые файлы сохраняют свои начальные атрибуты (права доступа, временные параметры), при выключении используется значение определяемое текущим значением umask. Чтобы при удалении файла у вас запрашивалось подтверждение проверьте установленна ли опция «Безопасное удаление» в «Настройки»-»Параметры».
Первым моим приятным удивлением в Linux‘e было автодополнение в bash, что по сравнению с ДОС, где при запуске программы необходимо было помнить полностью путь к нему, сильно облегчает жизнь и позволяет быстро найти нужный файл или набрать команду. Так вот в mc тоже работает автодополнение команд по <ALT+TAB>, но есть другая возможность быстро найти нужный файл, для этого нажмите <Alt+s> или <Ctrl+s> и по введенным вами буквам курсор будет перемещатся к нужному файлу, если у вас включена строка мини-статуса, то там также будет отображаться результат. Раз мы уже заговорили про поиск файлов, то для этого есть пункт меню «Команда-Поиск файла«, где можно произвести поиск по названию ( можно применять шаблон для egrep) или по тексту который должен содержаться в искомом файле. Для того чтобы не искать по все каталогам можно указать в каких именно производить поиск, также каталоги которые нужно пропустить можно указать в файле ~/.mc/ini разделяя их двоеточиями. Пример:
[Misk]
find_ignore_dirs=/mnt/cdrom:/var:/boot
Напомню только, что точка при указании каталога означает текущий каталог, а ~ (тильда) – домашний.
Пункт «Критерий панелизации» (Ctrl+x) применяется в том случае если вы хотите вывести результат выполнения какой либо команды на текущую панель (что-то типа встроеного терминала) чтобы не выходить из mc, часто набираемые команды можно сохранять. Подменю «История команд» выводит окно со списком ранее набранных команд можно выделить необходимую с помощью мыши или клавиш перемещения и скопировать в командную строку для редактирования и выполнения. А в подменю «Справочник каталогов» Ctrl+ \» можно занести наиболее часто используемые в работе подкаталоги, для быстрой навигации по дереву каталогов. С помощью пункта «Фоновые задания» можно управлять фоновыми заданиями запущеними из mc. С помощью mc можно запускать по нажатию «Enter» программу, для того чтобы связать расширение файла с программой, которая будет выполняться по нажатию на ней, существует файл ~/.mc/bindings его можно вызвать для редактирования через подпункт меню «Файл расширений». «Файл меню» позволяет отредактировать пользовательское меню (вызываемое по F2) все внесенные изменения сохраняются в файле ~/.mc/menu. Это обычный текстовый файл и естественно, как везде в Linux туда можно добавить свои пункты. Для обращения к файлам и каталогам доступны следующие переменные:
· %f – имя файла над которым расположен указатель
· %d – текущий каталог
· %F – имя текущего файл в противоположной панели
· %D – имя текущего каталога в противоположной панели
· %t – выделенные файлы в текущей панели
· %T – выделенные файлы в противоположной панели
· %{текст} – в том месте, где употреблена эта конструкция появится приглашение ввести текст, который будет подставлен в скрипт
· %s или %S – выделенные файлы
Строка которая начинается с любого знака кроме пробела, считается названием подпункта меню. Первый символ может использоваться как горячая клавиша. Остальные строки которые начинаются спробела или знака табуляции считаются скриптом при обращении к котрому происходит подстановка переменных, копирование всего этого во временный файл, который и исполняется.
Например следующий скрипт устанавливает rpm пакет (под root) на который указывает курсор :
R Install rpm package
rpm -Uhv %f
т.е. в каталоге с rpm пакетами войдите в пользовательское меню клавишей F2 и нажмите R, пакет над которым располагался курсор будет установлен.
Для deb
R Install deb package
dpkg -i %f
А следующий скрипт запускает в фоне все выделенные музыкальные файлы (щелчек правой кнопкой по нужным файлам, F2 и потом S что может быть проще)
S Sound play
mpg123 %t&
Таким образом можно существенно облегчить себе жизнь и не набирать в командной строке по сто раз ко дню одно и то же. А запустив какой нибуть оконный менеджер полегче типа flwm или failsafe (это для того чтобы можно было запускать приложения написанные под X-Window) и создав необходимые пункты меню, можно на слабых компьютерах работать не менее комфортно чем в КДЕ. Я например, использую меню еще и для запуска различных текстовых редакторов, писать программы мне нравится в одном, HTML править в другом, подготавливать документы в третьем и т.д. Это кстати еще один способ сделать с файлами, то что вы хотите, например для переименования с изменением атрибутов или копирование архивов с одновременной их распаковкой. Вот с помощью такой конструкции можно сделать символические ссылки в другой панели на выделеные файлы.
for i in %s
do
ln -s %d/$i %D/$i
done
Переменной i при каждой итерации цикла передается имя файла. Конструкция %d/$i представлляет собой полный путь к файлу в текущем каталоге, и %D/$i в противоположном.
Очень часто в конференциях спрашивают «а не переделать ли mc чтобы удобно было делать то то» вот вам способ, творите.
Есть еще подпункт «Восстановление файлов» с помощью которого можно попытаться востановить файл на файловой системе ext2fs, но с файлами я прощаюсь раз и на всегда, поэтому честно говоря им не разу не пользовался.
С помощью встроеного редактора можно просматривать или редактировать текстовые файлы (а еще архивы, rpm|deb пакеты) (горячая клавиша F3 и F4 соответственно). При условии что в файле ~/.mc/ini установленны в 1 переменные «use_internal_view» и «use_internal_edit» (как правило по умолчанию они установлены), встроенный редактор можно вызвать просто набрав в командной строке mcedit при этом откроется пустой файл. C помощью него можно редактировать как обычные AСSII файлы, так и двоичные не боясь повреждения данных. Можно сделать чтобы по умолчанию запускался какой либо другой редактор или просмотрщик. Для этого в «Настройки-конфигурация» уберите галочки с пунктов «Встроенный просмотр» и «Встроенный редактор«. После этого для просмотра будет запускаться программа указанная в переменной окружения PAGER, а если она не установленна, то будет выполнена команда view. Аналогично для редактора используется переменная EDITOR и редактор nano. Но по моему и встроенные средства достаточно хороши, а если будет в том необходимость, то для запуска необходимого редактора я воспользуюсь описанным раннее способом.
Вот вкратце и все, что я хотел расказать о Midnight Commander могу сказать, что даже таки вопросам, как работа встроеного редактора и отличие работы в консольном режиме и емуляторе терминала, можно посвятить еще несколько страниц, но рамки журнала, как вы должны понимать, не позволяют это сделать. Самое интересное, что первые месяцы моей работы в Linux я даже не подозревал о том, что у меня есть такая удобная программа, набрел случайно и теперь отношу к разряду программ первой необходимости. Естественно, как принято во многих программах при нажатии клавиши F1 будет вызвана справка, где вы можете найти необходимую информацию.
Я надеюсь мы сегодня продвинулись еще на один шаг в изучении Linux. Успехов. Linux forever!