В 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"