sintetizando um operador de aplicativo funcional bash

1

Isso é um pouco estranho, mas aprendi a não fazer suposições sobre as capacidades de qualquer coisa, já que frequentemente me surpreendo com recursos ocultos enterrados nas ferramentas UNIX / Linux, então aqui está.

Eu sempre me encontro executando comandos em que preciso localizar um arquivo em um sistema e, depois de ver a localização para sanidade, preciso fazer algo com o caminho.

Tome este fluxo de trabalho, por exemplo:

$ which foo.sh
/path/to/something/foo.sh
$ vim 'which foo.sh'

Esse segundo comando leva 1-2 segundos inteiros para ser digitado. É loucura. Eu faço isso com tanta freqüência que está começando a parecer um clichê que eu deveria ser capaz de fatorar.

O que eu adoraria seria magia fantasiosa que me permitiria fazer o seguinte:

$ which foo.sh
/path/to/something/foo.sh
$ which foo.sh |! vim

Este segundo caso é IMO muito superior. Eu acho muito mais fácil digitar "|! Vim" depois da seta para cima do que eu procurando o início da linha, digitando o backtick vim, depois procurando o final da linha e digitando um backtick final.

Imagine o operador de pipe-bang fazendo algo parecido com "| xargs, vim", mas de uma maneira que preserva o terminal para o vim e também como algo muito mais curto para digitar. Pipe-bang é, claro, um erro de sintaxe no bash e não pode ser aliado, então a coisa que eu quero fazer parece impossível.

Ou é? Eu suspeito que este é um caso de TMTOWTDI, mas estou tendo um bloqueio mental.

Não precisa ser literalmente "pipe-bang", mas algo próximo é o objetivo.

    
por mbac32768 26.10.2010 / 16:16

3 respostas

2

Isso também deve funcionar:

qual foo.sh | xargs vim

    
por 26.10.2010 / 16:29
1

Eu faço a mesma coisa, geralmente (geralmente com o qual encontrar um binário, então rpm -qf para ver qual pacote o fornece)! Minha rota é melhor do que você, mas mais lenta do que você quer; Eu ofereço isso como uma casa a meio caminho.

$ which foo.sh
/path/to/something/foo.sh
$ vim '!!'

Na maioria dos teclados, o backtick e a tecla 1 também são muito próximos, então é bastante rápido digitar.

    
por 26.10.2010 / 16:20
1

Dê isto ( v im p revious) uma tentativa:

$ alias vp='vim $(fc -s)'
$ which foo.sh
$ vp

O fc -s re-executa o comando anterior com uma substituição (null neste caso).

Você pode colocar o alias no seu arquivo ~/.bashrc . Eu tenho o meu em um arquivo aliases que é originado pelo meu ~/.bashrc .

    
por 26.10.2010 / 21:29

Tags