Bash

如何將最後一個命令保存到文件中?

  • November 18, 2020

當我使用 bash shell 執行我的分析時,我經常想將我使用過的給我帶來良好結果的命令保存到同一目錄中的一個文件(我的“LOGBOOK”,正如它所呼叫的那樣),以便我可以檢查什麼我這樣做是為了得到這些結果。到目前為止,這意味著我要麼從終端複製.粘貼命令,要麼按“向上”將命令修改為echo"my command" >> LOGBOOK. 或其他類似的滑稽動作。

前幾天我發現有一個history工具,但是我找不到使用它來獲取先前執行的命令的方法,以便我可以執行類似getlast >> LOGBOOK.

有沒有一個很好的簡單方法來做到這一點。或者,其他人如何處理保存命令以獲得他們的結果?

如果您正在使用bash,您可以使用該fc命令以您想要的方式顯示您的歷史記錄:

fc -ln -1

這將列印出你的最後一個命令。-l表示列表,-n表示不以命令號作為前綴,並-1表示只顯示最後一個命令。如果行首的空格(僅多行命令的第一行)很麻煩,您可以使用sed. 把它變成一個shell函式,你就有了一個要求的解決方案(getlast >> LOGBOOK):

getlast() {
   fc -ln "$1" "$1" | sed '1s/^[[:space:]]*//'
}

這應該像您在問題中所問的那樣起作用。

我通過添加"$1" "$1"fc命令中添加了一些細微的變化。例如,這將允許您getlast mycommand列印出最後一個呼叫的命令行mycommand,因此如果您在執行另一個命令之前忘記保存,您仍然可以輕鬆保存命令的最後一個實例。如果您沒有將參數傳遞給getlast(即呼叫fcas fc -ln "" "",它只列印最後一個命令)。

$$ Note: Answer edited to account for @Bram’s comment and the issue mentioned in @glenn jackman’s answer. $$

引用自:https://unix.stackexchange.com/questions/38072