Как вызвать внутреннюю полночную команду командира из пунктов меню или привязок клавиш? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь автоматизировать некоторые вещи для моей настройки mc и хочу вызвать внутреннюю команду midnight commander из пунктов меню или привязок клавиш.

Например, у меня есть большое количество ssh-сайтов, определенных в .ssh / config,

# ssh (secure shell) configuration file
Host test1
    HostName 123.456.789.0
    Port 980
    User MyUserName

Host test2
    HostName test.mynet.local
    User test
    CheckHostIP no
    ..
  1. Я хочу отфильтровать и отсортировать псевдонимы из .ssh / config(например, с помощью):

    grep '^ Host' .ssh / config |cut -d '' -f 2 |sort

  2. Сохранение полученного списка во внутреннем окне списка mc или на панели выбора.

  3. Выберите одну из записей и вызовите удаленную оболочку дляправая файловая панель (например, mc sh: //% s ...).

По крайней мере, я хочу сохранить процедуру в привязке клавиш или в пункте меню mc.

Можно ли это сделать с помощью инструментов mc board или файлов конфигурации?

1 Ответ

0 голосов
/ 13 декабря 2018

То, что вы пытаетесь, невозможно, так как mc не является файловым менеджером с поддержкой скриптов.Он даже не имеет клавиатурных макросов.

Но я могу придумать несколько более слабых альтернатив.

  1. Использовать меню, вызываемое F2 (см. справочная страница для формата, раздел «Редактирование файла меню»).В меню выполните команду grep, передайте список хостов программе, например dialog, чтобы выбрать хост, и запустите mc sh://$host.Проблемы с подходом: нужно учиться dialog;будет вторая копия mc, которая обнаружит наличие первой и спросит, действительно ли вы хотите запустить вторую.Ой!

  2. В качестве альтернативы напишите скрипт, который будет запускать команду grep, получать списки хостов и программно редактировать ~/.cache/mc/history.Файл является ini-подобным файлом.Вам необходимо отредактировать раздел [inp:fishlink_cmd: Shell link to machine ].Ключи - это просто последовательные числа, значения - имена хостов.Пример:


[inp:fishlink_cmd: Shell link to machine ]
0=Host1
1=Host2

Теперь нажмите F9 , R [ight], h (дляS h команда ell) - в открывшемся диалоге появится список хостов.Нажмите Alt-p / Alt-n для предыдущего / следующего хоста или откройте список с помощью мыши.

...