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.]