A referência da Expansão da História do GNU não tem exemplos, então não sei se isso é possível.
Aqui está o que eu quero fazer. Eu corri cat long/path/to/file1.txt | less
, então eu corri vim file2.txt
. Usando a expansão do histórico, eu gostaria de correr, cat even/longer/path/to/file3.txt | less
mas não quero:
- Digite
long/path/to/file1.txt
, pois é inconveniente digitar. - Consulte o comando anterior com um número; quero me referir a ele com uma string. ou seja, Use
!cat...
, mas não!-2...
Isso pode ser feito?
Aqui está o que eu tentei (não funciona):
!cat:^!cat:1^even/longer/path/to/file3.txt^
Aqui está meu processo de pensamento:
!cat
- Substitua o último comando que começou com a stringcat
.:^x^y^
- Substituax
pory
neste comando!cat:1
- Expandir para o primeiro argumento do últimocat
comando, ou seja,long/path/to/file1.txt
even/longer/path/to/file3.txt
– A substituição desse texto expandido
Um motivo óbvio para isso não funcionar é que estou aninhando expansões em expansões: !cat:1
é interpretado como uma string literal.
Recebo esta saída:
long/path/to/file1.txtlong/path/to/file1.txteven/longer/path/to/file3.txt^: No such file or directory