Você não faria isso. Você usaria !!
.
Como eu uso o comando "history" para disparar o último comando de execução?
Como Ignacio disse, use !!
, mas se você insistir:
$(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)
Explicação:
$()
executa a saída do comando dentro de sed '$d'
exclui o último comando, por exemplo, 2001 $(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)
sed -n '$p'
imprime apenas a última linha, ou seja, 2000 yourpreviouscommand
cut -d ' ' -f 3-
remove os três primeiros campos, separados por espaços, ou seja, <space>2000<space>
Acho que pode ser mais conciso e robusto, mas funciona por enquanto.
Editar : se você quiser usar history
em vez de !!
, porque o shell que você está usando não tem !!
, você está sem sorte; history
é um shell embutido, não um programa. E os shells simples provavelmente não o terão se não tiverem !!
. Por exemplo, o traço não:
imgx64@home:~$ dash
$ history
dash: history: not found
$
No Bash, o comando fc
pode fazer o que você está procurando.
De man bash
:
...
In the second form, command is re-executed after each instance of pat is replaced by rep. A useful alias to use with this isr="fc -s"
, so that typingr cc
runs the last command beginning withcc
and typingr
re-executes the last command.
...