Como faço para trocar os dois últimos argumentos da linha de comando?

5
$ ln -s ./dir/target.txt /path/to/source.txt{cursor here}

Como o arquivo de troca digita nomes de arquivos na linha de comando? Alt + T troca palavras, não nomes de arquivos, resultando em ln -s ./dir/target.txt /path/to/txt.source .

Idealmente, a solução também deve interpretar "filenames with quotes.txt" corretamente.

Pode ser feito por alguma configuração readline e / ou bash, ou por algum uso inteligente de atalhos existentes?

    
por Vi. 01.03.2015 / 22:42

2 respostas

5

Resposta parcial com base em esta . {} indica cursor:

$ ln -s ./dir/target.txt /path/to/source.txt{}
Ctrl + W (repetir isto se uma vez não for suficiente, mas não Backspace )

$ ln -s ./dir/target.txt {}
Ctrl + {, , , }, ,

$ ln -s {}./dir/target.txt 
Ctrl + Y , Espaço

$ ln -s /path/to/source.txt. {}/dir/target.txt

Pronto.

    
por 02.03.2015 / 01:32
4

Acho que isso pode ser feito usando comandos bang:

!:0 !:2 !:1

!:0 word designator 0, the zeroth word.
!:n The nth word.


man bash

Designadores de palavras, seção.

    
por 02.03.2015 / 00:01