Eu usaria o suporte ao histórico do bash para fazer isso. Após qualquer comando, você pode referenciá-lo novamente com !!
:
[jk@pecola tmp]$ find . -name test.text
./directory1/directory2/directory3/test.text
Para executar um ls -l
na saída do último comando:
[jk@pecola tmp]$ ls -l $(!!)
ls -l $(find . -name test.text)
-rw-rw-r-- 1 jk jk 0 Jan 23 20:49 ./directory1/directory2/directory3/directory4/test.text
Neste exemplo, usamos a sintaxe $(...)
para usar a saída do comando como um argumento para outro comando.
Como !!
faz referência ao último comando executado, agora precisamos ser mais específicos se quisermos executar novamente o comando find, já que executamos ls
since. Podemos usar a sintaxe !<match>
para executar novamente o último comando iniciado com <match>
[jk@pecola tmp]$ dirname $(!find)
dirname $(find . -name test.text)
./directory1/directory2/directory3
[jk@pecola tmp]$ cd $(dirname $(!find))
cd $(dirname $(find . -name test.text))
[jk@pecola directory4]$ ls
test.text
Eu também acho isso útil para reutilizar comandos para os quais você precisa de sudo:
[jk@pecola tmp]$ adduser newuser
adduser: Only root may add a user or group to the system.
[jk@pecola tmp]$ sudo !!
sudo adduser newuser