Midnight Commander - множественный выбор
В MC я могу скопировать имя текущего файла из списка файлов в консоль, нажав Ctrl+Enter.
Предположим, я хочу скопировать несколько файлов в консоль. Пример: хочу создать *.zip
с несколькими файлами:
zip new_zip.zip a.txt b.txt c.txt 231202fkfo3f.txt
Я могу выбрать несколько файлов с помощью Вставить (или эквивалент. Ctrl+t). После этого я хочу использовать один ярлык, чтобы все выбранные имена файлов шли прямо на консоль. Что-то вроде Ctrl+Enter.
Каковы способы сделать это?
2 ответа
Если вы нажмете Ctrl+x t, он вставит имена всех файлов, отмеченных вами с помощью Ctrl+t или Insert, в командную строку.
Аналогичное встроенное решение доступно в пользовательском меню 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
и быть в курсе табуляции. Первая и вторая строки не имеют табуляции, а скрипт табулируется с помощью вкладок. Иначе mc
не сможет разобрать его.
После этого вам нужно выбрать несколько файлов и нажать F2. Нажмите недавно добавленное "Поместить выбранные файлы в историю". Теперь они добавлены в историю, но ее следует перечитать, чтобы использовать. Нажмите Ctrl + O, и вы должны набрать history -r
в командной строке. Наконец, вы найдете выбранные имена файлов, нажав клавишу ВВЕРХ.
Альтернативное решение может быть использовано также. Возможно, проще просто напечатать строку в терминал, и после этого вы можете скопировать и вставить ее. Следующий скрипт реализует это:
+ t t
p Print selected files to subshell
set %t
while [ -n "$1" ]; do
STR="$STR \"$1\""
shift
done
echo "$STR"