Se você pressionar Ctrl + x t , ele irá colar os nomes de todos os arquivos que você marcou com Ctrl + t ou Insira na linha de comando.
Suponha que eu queira vários arquivos para copiar para o console. Exemplo: deseja criar *.zip
com vários arquivos:
zip new_zip.zip a.txt b.txt c.txt 231202fkfo3f.txt
Eu posso selecionar vários arquivos com Insert (ou equiv. Ctrl + t ). Eu quero um atalho para usar depois que todos os nomes de arquivos selecionados para ir direto para o console. Algo como Ctrl + Enter .
Quais são as maneiras de fazer isso?
Uma solução integrada similar está disponível no menu do usuário F2 . Ele é chamado de "Faça algo nos arquivos marcados" e executa o comando fornecido nos arquivos, um a um.
Novos comandos podem ser adicionados a este menu. É uma solução um pouco complicada, mas funcionou para mim. (Suporte subshell é necessário.)
O arquivo de configuração do menu do usuário geralmente está localizado em:
/etc/mc/mc.menu
Minha solução é baseada em "Fazer algo nos arquivos marcados". Eu copiei suas linhas e modifiquei assim:
+ 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
Primeira linha significa que ela deve ser mostrada apenas se vários arquivos forem selecionados. A segunda linha contém um título e um atalho dentro do menu do usuário ( p ). Depois disso, vem um script de shell que adiciona nomes de arquivos selecionados ao seu histórico.
Adicione essas linhas a mc.menu
e esteja ciente da tabulação. Primeira e segunda linha não tem tabulação, e o script é tabulado com TABs. Caso contrário, mc
não seria capaz de analisá-lo.
Depois disso, você deve selecionar alguns arquivos e pressionar F2 . Pressione o recém-adicionado "Colocar arquivos selecionados para o histórico". Agora eles são adicionados ao histórico, mas devem ser relidos para serem usados. Pressione Ctrl + O , e você deve digitar history -r
na linha de comando. Finalmente, você encontrará os nomes dos arquivos selecionados pressionando a tecla UP .
Uma solução alternativa também pode ser usada. Talvez seja mais fácil simplesmente imprimir a string no terminal, e depois disso você pode copiá-la e colá-la. O script a seguir implementa isso:
+ t t
p Print selected files to subshell
set %t
while [ -n "$1" ]; do
STR="$STR \"$1\""
shift
done
echo "$STR"