Перейти к содержимому

Midnight Commander (MC) – курс выживания для владельцев веб-серверов

Этот материал предназначен для максимально быстрого старта работы с MC.
Midnight Commander (сокращенно – MC) – это файловый менеджер, который устанавливается на ваш сервер (или ваш локальный компьютер) и позволяет управлять файлами, а также редактировать их.
MC используется как основная рабочая лошадка для RISH. С его помощью можно копировать, перемещать, архивировать, редактировать и выполнять другие действия с файлами как на вашем, так и на удаленном компьютере. Так же именно из меню MC вызываются команды RISH.
Тем, кто еще застал времена Norton Commander, наверное, будет проще разобраться с MC, а вот для остальных этот файловый менеджер может вызвать непонимание.

Как работает MC?

Первое, что нужно понять – MC может работать на вашем компьютере, как традиционная программа файловый менеджер и тогда он управляет файлами на вашем компьютере, а может выполняться на удаленном комьютере (сервере с вашим сайтом). В этом случае окошко с файловым менеджером для удаленного сервера выступает как монитор, а вы управляете его работой не на своем компьютере, а на удаленном.
Надеюсь, что это эта очевидная мысль, послужит вам к верному пониманию взаимодействия между вами и MC. Потому что взаимодействовать вы будете посредством терминальной программы, установленной уже на вашем компьютере.
В случае использования RISH у вас будет именно такой сценарий использования, когда MC используется на вашем сервере для управления расположенными там файлами.
Важно понимать, что разные терминальные программы на разных компьютерах с разными клавиатурами (клавиатура mac очень отличается от windows – например, там отсутствует клавиша INSERT) могут вести себя по разному.
Может быть вы сегодня подключились к серверу через свой macbook, а завтра вам нужно соединиться с ним из офиса через windows компьютер, а потом в метро вы можете подключиться со своего телефона... MC приходится взаимодействовать с разными терминальными программами и поэтому некоторые клавиатурные сочетания вам могут показаться странными. Я постараюсь обратить ваше мнимание на этот аспект. Причина такого поведения очень проста – MC должен работать даже на клавиатуре (или телетайпе), где могут отсутствовать стрелки и другие клавиши. И хотя поведение MC может показаться вначале непонятным – он легко подстраивается под ваши привычки.

Как запустить MC и где скачать для MacOS и Windows

Если MC уже установлен (а в случае RISH он уже поставлен на вашей системе), то запускается он очень просто – набираем mc в командной строке.
На Windows Midnight Commander скачать можно по ссылке https://github.com/adamyg/mcwin32.
На Mac Midnight Commander ставится из репозитариев brew – brew install mc в командной строке. Установить brew на Mac можно (если еще не установлен) выполнив команду /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)". Прочитать про него можно по ссылке https://brew.sh/

Как устроен MC (анатомия файлового менеджера)

Визуально MC разделяется на 5 основных областей:
  • Верхняя строка меню. Можно кликнуть мышкой или нажать F9 чтобы перейти в верхнее меню. Передвигаемся по нему стрелками. Выбор пункта меню – enter.
  • Левая панель с файлами или служебной информацией.
  • Правая панель с файлами или служебной информацией.
  • Строка для исполнения терминальных команд
  • Подсказка по назначению основных функциональных клавиш

Команды из блока 5 соответствуют клавишам с F1 по F10. И их также можно нажимать мышкой (если кому так будет удобнее).
Еще можно переключиться на режим командной строки (традиционная консоль), если нажать Ctrl-o (буква о) для того чтобы посмотреть вывод консольных команд или поработать с командной строкой. Назад можно вернуться нажав это сочетание повторно.
Прошу особое внимание уделить блоку 4 – командной строке. Она предназначена для того, чтобы вы могли набрать команды непосредственно в командной строке, как это обычно делается без MC. Выполнить команду можно просто нажав Enter.
Однако есть один коварный момент – где бы ни находился ваш курсор – вы просто можете начать набирать команду и эти символы будут появляться в командной строке. Только вот новички не всегда это делают осознанно – они могут случайно нажать не тот символ и он останется в командной строке набранным. В таком случае меняется поведение клавиши Enter. Вы будете недоумевать почему все работает не так, как вы ожидаете. Просто проверьте, что командная строка пуста (или удалите набранные символы с помощью клавиши backspace – ее еще называют «стрелочка назад» или «забой»).

Панели MC

На левой и правой панели отображаются файлы и каталоги в текущем расположении файловой системы. Здесь так же может отображаться дополнительная информация о текущем файле и файловой системе или содержимом сайта. Режим отображения текущей панели управляется через верхнее меню, в которое можно попасть нажав F9 или кликнув мышкой.
Больше всего из этого списка нас интересует два режима:
  • Список файлов (это то, что вы видите изначально)
  • Информация (о файле и файловой системе)
Второй режим можно включить опять же мышью через меню или нажав следующие клавиши – Ctrl-x i (они указаны в меню). Нажимать их следует так - нажимаем Ctrl, не отпуская ее, нажимаем x, затем, отпустив обе клавиши, просто жмем i. Включится режим отображения о файле и файловой системе. Выключается повторным нажатием на них же. Если не сработает, проверьте какой язык у вас включен на компьютере. Все работает только для английской раскладки.
Режим отображения информации о файле и файловой системе очень важен, потому что именно там вы увидите свободное место на диске. Это очень частый источник проблем на сервере.
Здесь можно увидеть владельца файла, права и другую информацию о файловой системе.
Ctrl-u позволяет поменять панели местами. Просто для удобства. Но я почему-то этим пользуюсь часто.

Поведение клавиши Esc

Вы уже давно все привыкли к тому, что Esc означает отказ или выход из программы. В большинстве случаев так и есть и сам MC следует этому соглашению. Но, как я уже упоминал ранее, MC расчитан на работу с различными терминалами и некоторые настолько ущербны, что у них отсутствует необходимые клавишы. В таком случае нужное сочетание набирается с помощью клавиши Esc (esc последовательности).
Это противоречит тому поведению клавиши Esc, к которому мы привыкли. MC постарался разрешить это противоречие, введя задержку на ожидание новых нажатий клавиш после клавиши Esc. Эта задержка есть в настройках. По умолчанию там установлено очень большое число, и если вы замечаете, что вам приходится нажимать клавишу Esc два раза, чтобы выйти из программы, то самое время это число в настройках изменить.
Поставьте здесь значение порядка 100 (это микросекунды, по умолчанию там стоит 1000000). Этого будет достаточно, чтобы вернуть привычное поведение Esc.

Копирование и вставка из буфера обмена

Раз уж мы упомянули поведение обычной клавиши Esc, давайте поговорим еще об одних привычных для нас клавишах - Ctrl-C, Ctrl-V.
Лучше всего про них забыть :)
Ctrl-C в терминале Linux обычно нужен, чтобы остановить выполнение программы. Это сочетание работает как STOP (кстати, запомните, может пригодиться). А Ctrl-V на вашем Windows терминале скорее всего просто не сработает.
Есть универсальная замена, которая работает везде, в том числе и в других программах Windows. Ctrl-Insert и Shift-Insert. Лучше привыкните к ним. Тем более, что они работают вне зависимости от языковой раскладки.
Shift-Insert вставляет в терминал текст из буфера обмена. Для владельцев Mac – сочетание Ctrl-V у вас должно работать в терминале, поскольку клавиши Insert у вас попросту нет.
А вот чтобы скопировать текст из терминала никакого сочетания клавиш не требуется – просто выделите мышкой любой текст и он уже окажется в буфере обмена – нажимать ничего не надо. Иногда это может очень путать новичков, у которых непроизвольно исчезает текст из буфера обмена.
Однако, если вы находитесь в MC, то выделять текст, чтобы он попал в буфер обмена, придется с зажатой клавишей Shift для Windows пользователей или c зажатой клавишей Option для владельцев Mac. Помните об этом!

Каталоги и файлы

Каталоги отображаются более ярким белым цветом и идут в начале списка. Файлы идут за ними и отображаются серым цветом (менее ярким белым). Вначале идут скрытые файлы (те, что начинаются с точки), затем идут обычные.
По умолчанию файлы отсортированы по имени. Способ сортировки отображается в левом верхнем углу каждой панели (на него тоже можно кликать мышкой, меняя порядок сортировки).
  • Исполняемые файлы
    отображаются зеленым цветом и перед именем файла рисуется звездочка. В данном случае звездочка – это не часть имени!
  • Архивы
    отображаются цветом magenta (похож на розовый)
  • Файлы баз данных
    отображаются красным цветом
Есть и другие цвета файлов (голубые для исходных текстов и символических ссылок, желтые для doc файлов и так далее), но для нас важны именно эти.

Копирование, перемещение и переименовывание файлов

Принцип копирования и перемещения файлов очень простой – текущий файл (тот, что выделен строкой морского цвета) файл копируется из места, где сейчас находится курсор в место, которое отображается на другой панели.
Поменять местами панели можно с помощью клавиш Ctrl-u. Открыть на неактивной панели то же самое расположение, что и на текущей – Alt-i или Option-i нам Mac.
F5копирование файлов и каталогов. Производится копирование того файла или каталога, на котором сейчас установлен курсор в место, отображаемое на другой панели MC. Перед копированием будет показано окно, в котором указано откуда файл копируется и куда. Там же можно подправить место назначения. Для начала процесса копирования, просто нажмите Enter.
F6перемещение файлов и каталогов. Принцип аналогичен копированию, но исходный файл именно перемещается. Обычно этот процесс происходит быстрее копирования, если все делается в рамках одной файловой системы.
F6переименование файлов и каталогов. Эта же самая клавиша может использоваться и для переименования файлов и каталогов. В окне, которое показывает адрес назначения нужно просто набрать новое имя файла или каталога. Маленький совет – не надо кликать в эту строку курсором мыши – в этом случае, если вы начнете набирать новое имя, оно просто сотрет старое, когда вы нажмете первую букву. Это позволит вам сэкономить время на стирание введенных символов.

Обновление панелей

Ctrl-r – панели не обновляются автоматически подобно тому, как это происходит у вас на компьютере. Надеюсь, вы это понимаете... Поэтому если вы следите за обновлением log файлов на компьютере или появлением новых архивов, которые формирует ваш скрипт, или еще какие-то изменения происходят с файлами на вашем сервере, то самое нужное для вас сочетание клавиш, это именно Ctrl-r. Позволяет перечитать состояние файловой системы и отобразить все изменения на панели.

Выделение файлов и каталогов

Если нужно копировать несколько файлов или каталогов, их можно выделить с помощью клавиши insert или Shift-↑ Shift-↓ (Shift и стрелки вверх и вниз на клавиатуре). В случае, если имеются выделенные файлы, копирование производится именно выделенных файлов, а не того, на который указывает курсор.
Для выделения всех видимых в панели файлов и каталогов или для выделения файлов по маске (например, всех файлов с расширением .log) можно использовать клавишу +, которая расположена на цифровом блоке клавиатуры или обычный значок плюса +. Удобнее всего использовать плюс из цифрового блока, потому, что не требуется нажатие Shift.
Так же можно использовать соответствующие пункты меню из раздела Файл.
После нажатия клавиши + появится окно для ввода маски выделения. Обратите внимание, что здесь должна стоять звездочка, если вы хотите выделить все файлы и каталоги в текущем каталоге. Или явно указанная маска, для выделения по маске. Например, для выделения только файлов с расширением .log надо ввести *.log
- – снимает выделение файлов по маске или, если в качестве маски введена звездочка (это значение по умолчанию), снимает выделение со всех файлов и каталогов в текущем каталоге.
* – Инвертирует текущее выделение выделение файлов. Прошу акцентировать внимание на слове "файлов". То есть, если выделены и файлы и каталоги, то инвертировать выделение получится именно для файлов. Кстати это самый быстрый способ выделить в каталоге только файлы. Достаточно просто нажать звездочку и все файлы в текущем каталоге окажутся выделены.

Как узнать размер каталога

Ctrl-space – это сочетание клавиш покажет размер текущего каталога, на который указывает курсор. К сожалению, на Mac это сочетание переключает раскладку языка. Поэтому для владельцев Mac придется размер каталога определять через меню F9->Команда->Размеры каталогов.

Перемещение по каталогам

По умолчанию стрелки вверх и вниз позволяют перемещаться по каталогу. Для того, чтобы подняться на уровень выше, вам нужно добраться к началу каталога и найти там две точки – это переход к каталогу на уровень выше. Нажатие Enter на /.. позволит подняться на уровень выше. Быстрее переместиться к началу списка файлов в панели поможет клавиша Home.
Если нажать на Enter на имени каталога – то вы войдете в этот каталог.
Стрелки влево и вправо не несут практической пользы в таком режиме. Но можно переключить режим перемещения на более удобный – он называется «Навигация в стиле lynx».
Нужно зайти в настройки в верхнем меню и выбрать «Настройки панелей», а затем – «Навигация в стиле lynx» и включить этот режим (поставить крестик с помощью пробела). После этого стрелка влево позволит подняться на уровень выше (в родительский каталог), а стрелка вправо позволит зайти в тот каталог, на котором расположен курсор. Если вы попробуете попользоваться этим режимом – поймете насколько он удобнее и быстрее. Но если не понравится – всегда можно там же и выключить.

Работа с архивами

Работать с архивами очень просто – в архив можно зайти подобно тому, как заходят в каталог. То есть устанавливаем курсор на файл с архивом и нажимаем клавишу Enter. Правда, сразу нужно учитывать, что если архив большой, то реакция на нажатие Enter последует не сразу. Задержка может доходить даже до десятка секунд – все зависит от мощности вашего сервера и размера архива. В этом случае после нажатия Enter нужно просто подождать некоторое время.
После того, как вы вошли в архив извлечь файлы можно очень просто, подобно тому как вы копируете обычные файлы, нажав F5. С точки зрения пользователя ничем не отличается от работы с каталогом.
Правда, есть один тонкий момент, который надо обязательно учитывать – если вы работаете с архивом .tar.gz, то все пройдет нормально, а вот если у вас .zip – извлечение из такого архива может занять значительное время. Чтобы ускорить процесс – можно воспользоваться командой unzip в командной строке. А вообще лучше взять себе за правило не связываться с архивами zip и все хранить в tar.gz. Еще одна причина так делать – невозможность сохранить в zip архиве права на файлы.
Небольшая подсказка, которая позволяет ускорить работу в командной строке – Alt-Enter (или Option-Enter на Mac) позволяет ввести в командную строку имя текущего файла или каталога. В таком случае разархивирование zip файла выглядит таким образом – мы наводим курсор на файл, набираем unzip в командной строке, нажимаем пробел и затем нажимаем Alt-Enter. Все, у нас получилась готовая команда и нам осталось только нажать Enter для ее запуска.

Создание и удаление файлов и каталогов

F7 – создать папку в текущем каталоге (надеюсь все понимают, что не надо использовать *, +, и знак вопроса в имени?).
F8 – удалить текущий файл или каталог (перед удалением вас переспросят – стоит ли это делать).
Shift-F4 – создать новый файл. Будет открыт текстовый редактор, в котором вы сможете набрать содержимое файла. В момент сохранения (по F2) или при попытке выйти из файла, вас попросят дать имя новому файлу.

Просмотр и редактирование файлов

По умолчанию в MC выбраны встроенные редактор и просмотрщик, но если это не так – можно вернуть стандартное поведение в меню Конфигурации. Поставьте крестики напротив нужных параметров.
F3 – просмотр текущего файла (обычно срабатывает быстрее на больших файлах и гарантирует, что вы ничего случайно не поменяете в нем). Есть еще одно преимущество – строки можно как сворачивать, так и разворачивать по всей длине. Удобно просматривать таким образом log файлы. F2 – позволяет переключаться между свернутыми и развернутыми строками. F4 – позволяет увидеть 16-тиричный код символов. Очень полезно, если у вас неожиданно возникла неприятная проблема с BOM последовательностью в php файлах, которая способна свести с ума каждого отсутствием явно видимых ошибок в коде. Так вот этот режим позволяет своими глазами убедиться в наличии нечитаемых символов. Must have одним словом. F7 – поиск нужной строки в файле.
F4 – редактирование текущего файла. Есть расцветка кода, что делает редактирование более приятным. Из необходимых команд – F7 – поиск нужной строки текста в файле и F4 – поиск и замена текста по всему файлу. Ctrl-y – удаление строки, на которой находится курсор. С остальными возможностями можно ознакомиться, если нажать F1.
Если вы хотите что-то вставить в буфер обмена,напомню еще раз – делается это с зажатой клавишей Shift для Windows пользователей или c зажатой клавишей Option для владельцев Mac. Просто выделяете текст и все – он уже в буфере обмена! Вставить можно с помощью Shift-Insert для Windows или Ctrl-V для Mac.

Права доступа и владелец файла

Жизненно важные вещи для владельцев веб-сервера – это права доступа к файлу и владельцы файла.
Ctrl-x c – на всякий случай напоминаю – после нажатия Ctrl-x отпускаем обе клавиши и потом нажимаем c. Обязательно нажимаем в английской раскладке.
Переключать права можно с помощью пробела или нажатия мыши.
Ctrl-x o – сменить владельца файла.
Переход между панелями с помощью привычной табуляции или мышью. Esc – как всегда отмена.
Помимо этих двух привычных и быстрых команд для быстрой смены прав и владельца файла, можно использовать меню расширенной смены, где все можно сделать в рамках одного экрана и отображение может показаться кому-то более привычнм. Вызов происходит только из меню, горячей клавишы для быстрого вызова нет. Путь вызова F9 -> Файл -> Права (расширенные).
Здесь установка прав делается путем нажатия клавиш r w x. Переход можно делать стрелками или табуляцией. Выбор владельца файла осуществляется путем нажатия Enter, когда курсор переходит на нужный пункт.

Подключение по FTP, SFTP или SSH (Виртуальные файловые системы)

Помимо того, что вы можете работать с файлами на своем сервере или компьютере, MC позволяет переносить файлы и между серверами и вашим компьютером. В терминологии MC это называется виртуальными файловыми системами (ВФС).
Если вам нужно перенести данные с одного сервера на другой, удобнее всего это сделать через MC, минуя скачивание на свой компьютер и промежуточное архивирование. Если вам надо закачать файлы со своего компьютера, то можете это сделать и через MC.
Я советую использовать для подключения к удаленной машине SSH или SFTP. Помните, что FTP соединение не шифруется и подвержено атакам. В RISH FTP не используется.
Если у вас настроено подключение через ключ и сервер добавлен в файл config, то подключение в окне Shell-соединения очень простое – вам не придется даже набирать обязательное sh://. Например, вот так: astra. Где astra – это имя вашего сервера.
А еще вы можете использовать щелчок мышью по значку в конце строки для того, чтобы открыть историю подключения к вашим серверам. В этом случае даже набирать ничего не придется.
Более подробную инструкцию по каждому виду соединения можно получить, если нажать F1, когда откроется соответствующее окошко подключения.
В общем случае подключение будет выглядеть так: sh://Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript./var/www. Пароль в строке не передается. Подключение либо по ключам, либо пароль у вас спросят в процессе подключения. Здесь первые символы до двух косых черт – это тип подключения, затем идет адрес сервера и потом место в файловой системе сервера куда нужно подключиться.
Обычно таймаут отключения неиспользуемой виртуальной файловой системы (FTP и SFTP это и есть) составляет 60 секунд. Они будут отключены через минуту бездействия. Но, как всегда, параметры можно изменить. F9 -> Настройки -> Виртуальные ФС
Все текущие подключения виртуальных файловых систем можно просмотреть здесь: F9 -> «Команда» -> «Список активных ВФС». При необходимости ненужные можно отключить.

Выход из MC

F10 – выйти из MC. Не забывайте это сделать, если у вас включен режим Ctrl-o. После выхода из MC можно закрыть окно подключения по SSH с помощью Ctrl-D.
Задать вопросы, которые у вас возникли по работе с MC можно в нашем телеграм канале RISH.

Решение различных проблем с MC

Если панели стали различной ширины

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

Чтобы сделать панели одинаковой ширины: Нажмите Alt (option) + = (удерживайте клавишу Alt (Option) и нажмите =). Это вернет панели к одинаковой ширине.

При вызове редактора (по нажатию F4) появляется черный экран

Обычно такая ситуация бывает на дистрибутивах Linux отличных от AlmaLinux, но разобрать эту ситуацию нужно.

Если вы видите черный экран вместо ожидаемого редактора mcedit (редактор по умолчанию для mc), то вы, вероятнее всего, попали в один из редакторов по умолчанию вашей операционной системы.

Обычно таких редакторов бывает два – nano (из которого можно выйти просто нажав Ctrl-X (Control-X на Мак) или vim.

Определить nano очень просто – его подсказки по горячим клавишам находятся внизу (там и написано про Ctrl-X), а вот vim у незнакомого человека может вызвать ступор. Черный экран с текстом вашего файла и нет никакой реакции на нажатия привычных клавиш – это введет в ступор любого, кто впервые сталкивается с vim.

Поэтому сейчас ваша первая цель – выйти из vim.

Если вы находитесь в командном режиме (и не вводите текст), наберие :q! и нажмите Enter. Эта команда позволит вам выйти без сохранения изменений. Обратите внимание, что это подразумевает нажатие на двоеточие (при этом курсор переместится в нижнюю часть экрана, где и будут набираться остальные символы), а затем, после того, как нажали двоеточие, нужно набрать букву q и восклицательный знак. Обратите внимание на выбранный язык и регистр клавиатуры – двоеточие у вас может просто не нажаться, если вы будете делать это на другом языке, а вводимые символы вы не увидите.

Если вы находитесь в режиме ввода (редактирование текста), сначала нажмите Esc, чтобы перейти в командный режим, а затем следуйте инструкциям из предыдущего пункта.

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

  • Перейдите в главное меню, нажав F9.
  • Выберите пункт "Команда" (или "Command" на английском) и найдите пункт "Встроенный редактор" (или "Use Internal editor" на английском).