Midnight Commander — множественный выбор

Midnight Commander — множественный выбор

В MC я могу скопировать имя текущего файла из списка файлов в консоль, нажав Ctrl+ Enter.

Предположим, я хочу скопировать несколько файлов на консоль. Пример: хочу создать *.zipс несколькими файлами:

zip new_zip.zip a.txt b.txt c.txt 231202fkfo3f.txt 

Я могу выбрать несколько файлов с помощью Insert (или эквивалента Ctrl+ t). Я хочу, чтобы после этого использовалась одна комбинация клавиш для всех выбранных файлов, чтобы они попадали прямо в консоль. Что-то вроде Ctrl+ Enter.

Каковы способы это сделать?

решение1

Если нажать Ctrl+ , в командную строку x tбудут вставлены имена всех файлов, помеченных знаком Ctrl+ tили .Insert

решение2

Аналогичное встроенное решение доступно из F2меню пользователя. Оно называется «Сделать что-нибудь с помеченными файлами» и запускает заданную команду для файлов по одному.

В это меню можно добавить новые команды. Это немного сложное решение, но оно сработало для меня. (Необходима поддержка Subshell.)

Файл конфигурации меню пользователя обычно находится по адресу:

/etc/mc/mc.menu

Мое решение основано на "Сделать что-нибудь с помеченными файлами". Я скопировал его строки и изменил так:

+ t t
p       Put selected files to history
    set %t
    while [ -n "$1" ]; do
      STR="$STR \\\"$1\\\""
      shift
    done
    bash -ic "history -s $STR" > /dev/null

Первая строка означает, что она должна отображаться только если выбрано несколько файлов. Вторая строка содержит заголовок и ярлык внутри пользовательского меню ( p). После этого идет скрипт оболочки, который добавляет выбранные имена файлов в вашу историю.

Добавьте эти строки mc.menuи помните о табуляции. Первая и вторая строки не имеют табуляции, а скрипт табулирован с помощью TAB. Иначе mcне смог бы его разобрать.

После этого вам следует выбрать несколько файлов и нажать F2. Нажмите недавно добавленную кнопку «Поместить выбранные файлы в историю». Теперь они добавлены в историю, но ее нужно перечитать, чтобы использовать. Нажмите Ctrl+ O, и вам следует ввести history -rв командную строку. Наконец, вы найдете выбранные имена файлов, нажав UPклавишу .

Можно также использовать альтернативное решение. Возможно, проще просто вывести строку на терминал, а затем скопировать-вставить ее. Следующий скрипт реализует это:

+ t t
p       Print selected files to subshell
    set %t
    while [ -n "$1" ]; do
      STR="$STR \"$1\""
      shift
    done
    echo "$STR"

Связанный контент