Não é o que você pediu diretamente, mas você pode usar várias formas de interacção histórica para simplificar a sua tarefa:
$ cat path/to/dir/file01.txt
cat: path/to/dir/file01.txt: No such file or directory
$ different-command !$
different-command path/to/dir/file01.txt
bash: different-command: command not found
$ cat !$:s/1/2/
cat path/to/dir/file02.txt
cat: path/to/dir/file02.txt: No such file or directory
$ ^2^3
cat path/to/dir/file03.txt
cat: path/to/dir/file03.txt: No such file or directory
$ !-3:s/1/3/
different-command path/to/dir/file03.txt
bash: different-command: command not found
$ !diff:s/3/4/
different-command path/to/dir/file04.txt
bash: different-command: command not found
Ignorando os erros, cada vez que eu usei a interação do histórico ( !$ , !$:s/1/2 , ^2^3 ), você pode ver como bash o expandiu.
-
!$ - a última palavra do comando anterior
-
:s/1/2 - substitui a primeira ocorrência de 1 por 2 na palavra selecionada (nesse caso, !$ novamente).
-
^2^3 - substitui a primeira ocorrência de 2 por 3 em todo o comando anterior.
-
!-3 - executa o terceiro e último comando.
-
!diff - execute o último comando que iniciou com diff .