Se você estiver usando bash , pode usar o comando fc para exibir seu histórico da maneira que deseja:
fc -ln -1
Isso imprimirá seu último comando. -l significa lista, -n significa não prefixar linhas com números de comando e -1 diz para mostrar apenas o último comando. Se o espaço em branco no início da linha (apenas a primeira linha em comandos com várias linhas) for incômodo, você pode se livrar disso facilmente com sed . Transforme isso em uma função de shell e você terá uma solução conforme solicitado ( getlast >> LOGBOOK ):
getlast() {
fc -ln "$1" "$1" | sed '1s/^[[:space:]]*//'
}
Isso deve funcionar como você fez em sua pergunta.
Eu adicionei uma pequena variação adicionando "$1" "$1" ao comando fc . Isso permitirá que você diga, por exemplo, getlast mycommand para imprimir a última linha de comando invocando mycommand , portanto, se você esqueceu de salvar antes de executar outro comando, ainda é possível salvar facilmente a última instância de um comando. Se você não passar um argumento para getlast (ou seja, invocar fc as fc -ln "" "" , ele imprimirá apenas o último comando).
[Nota: Resposta editada para explicar o comentário de @Bram e a questão mencionada na resposta de @glenn jackman.]