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 ccruns the last command beginning withccand typingrre-executes the last command.
...