Eu frequentemente executo buscas no meu repositório de código-fonte assim:
ack -l "foo bar" .
As pesquisas podem levar de 10 a 60 segundos e produzir uma saída assim:
path/to/file1
path/to/file2
path/to/file3
Eu freqüentemente uso este alias para abrir todos os arquivos encontrados no vim:
alias go='gvim 'fc -s' -p'
Isso funciona bem, mas fc -s
executa novamente o comando anterior, o que pode levar segundos ou minutos.
Seria muito útil acrescentar algo assim a todos os comandos que gero de forma interativa:
| tee /tmp/lastCommand to all commands.
Dessa forma, se a saída se revelar útil, posso fazer outra coisa.
Exemplo de uso:
Tipo:
find . -type f
Que executa o seguinte:
find . -type f | tee $lastOutLocation # Where lastOutputLocation=/tmp/lastOutput
Você poderia usar algo assim para filtrar o comando anterior:
lastOut | grep "SomeString" # Where lastOut is an alias to cat $lastOutputLocation
Existe um mecanismo que eu possa usar para fazer algo assim? Eu não acho que os aliases exponham esse tipo de comportamento.
Potenciais Hurtles:
- Obtendo algo que funciona com comandos compostos:
echo 'baz' ; echo 'bar'
- Descobrir como modificar o comando que o usuário digitou antes de executá-lo
- Ignore coisas como entradas interativas. Não deseja capturar prompts de senha
Possíveis soluções, estou explorando atualmente: