Selecione vários arquivos no caminho longo (conclusão do nome do arquivo na expansão da chave?)

4

Às vezes, quero executar um comando, como argumentos para esse comando. Quero fornecer vários arquivos localizados em uma pasta no fundo da hierarquia do sistema de arquivos, por exemplo:

command /this/is/a/long/path/foobar /this/is/a/long/path/quux

Eu esperava poder usar a expansão de contraventamento e, com certeza, isso funciona:

command /this/is/a/long/path/{foobar,quux}

No entanto, os nomes dos arquivos podem ser longos e eu gostaria de usar a conclusão do nome do arquivo (tecla TAB), mas não parece funcionar dentro de chaves, alguma idéia?

    
por Anonymous 27.11.2012 / 15:50

1 resposta

1

Uma pequena solução alternativa: no Bash, [Ctrl]+u apaga do início da linha de comando até o cursor e coloca na memória, [Ctrl]+y "yanks" (cole) de volta.

Portanto, supondo que você queira executar o comando ls e fornecê-lo como arquivos de argumentos do ./deep/below/directory/ , você poderia:

1) comece digitando o nome longo da pasta, precedido por um espaço (isso salvará algumas teclas depois):   ./deep/below/directory/ (você pode usar [Tab] conforme necessário), seguido por [Ctrl]+u , que irá apagá-lo e mantê-lo na memória (observação: você precisa usar './' no início do nome do diretório se for um caminho relativo, caso contrário, o bash não irá preencher automaticamente os nomes dos diretórios no início da linha de comando)

2) digite o comando (e suas opções) seguido de um espaço: ex: ls -alFtr

3) use [Ctrl]+y para arrancar o nome da longa dir aqui e digite o início do nome do arquivo que você procura, e use [tab] como você costuma fazer para autocompletar seu nome (o nome do diretório cortado ainda está na memória pronto para ser reutilizado)

4) repita o passo 3) quantas vezes forem necessárias

5) [Enter]

Tempo para digitar, mas muito mais rápido para usar ^^, experimente!

    
por 28.11.2012 / 13:25

Tags