Na verdade, acabamos de perceber que a resposta do @terdon pode não funcionar com um pipeline de comando mais complicado; então eu criei o seguinte alias (chamado er
como abreviação de @contin echorun
):
#alias er=' cat <(echo "# cmd: $(history 1)") - | tee' # last tee is not needed, so:
alias er=' cat <(echo "# cmd: $(history 1)") -'
A idéia é, basicamente, que |er
deve ser inserido antes do último canal ou redirecionamento em uma linha de comando; então, é uma coincidência de sorte, de fato, que nesse ponto, history 1
refere-se exatamente à linha de comando atual! Assim, ele pode ser ecoado primeiro, antes do resto da entrada padrão (o que é nesse ponto), por cat
. E agora podemos fazer coisas como:
$ ls /usr/include/asm | grep 'p*.h' | grep 'osix' |er | tee mylist.txt
# cmd: 125 ls /usr/include/asm | grep 'p*.h' | grep 'osix' |er | tee mylist.txt
posix_types_32.h
posix_types_64.h
posix_types.h
$ ls /usr/include/asm | grep 's*.h' | grep 'ig' |er >> mylist.txt
$ cat mylist.txt
# cmd: 125 ls /usr/include/asm | grep 'p*.h' | grep 'osix' |er | tee mylist.txt
posix_types_32.h
posix_types_64.h
posix_types.h
# cmd: 126 ls /usr/include/asm | grep 's*.h' | grep 'ig' |er >> mylist.txt
sigcontext32.h
sigcontext.h
siginfo.h
signal.h
Assim, temos a linha de comando completa de vários canais - e não precisamos nos preocupar em escapar de nada - basicamente, basta adicionar er
ao último canal. O único problema é o número da história (não me incomoda muito, senão adicionaria um awk
adicional no alias).
Bem, espero que isso ajude alguém,
Felicidades!