Bash
從 bash 歷史記錄中刪除最後 N 行
當不小心將文件粘貼到 shell 中時,它會在 bash 歷史記錄中添加大量醜陋的無意義條目。有沒有一種干淨的方法來刪除這些條目?顯然我可以關閉 shell 並
.bash_history
手動編輯文件,但也許有某種 API 可用於修改目前 shell 的歷史記錄?
從 開始
bash-5.0-alpha
,該history
命令現在為 delete (-d
) 選項提供一個範圍。請參閱rastafile 的答案。對於舊版本,以下解決方法。
您可以使用
history -d offset
builtin 從目前 shell 的歷史記錄中刪除特定行,或history -c
清除整個歷史記錄。如果您想刪除一系列行,這並不實際,因為它只需要一個偏移量作為參數,但您可以將它包裝在一個帶有循環的函式中。
rmhist() { start=$1 end=$2 count=$(( end - start )) while [ $count -ge 0 ] ; do history -d $start ((count--)) done }
用 呼叫它
rmhist first_line_to_delete last_line_to_delete
。(根據輸出的行號history
。)(
history -w
用於強制寫入歷史文件。)
命令提示符中的這一行將有所幫助。
for i in {1..N}; do history -d START_NUM; done
其中 START_NUM 是歷史記錄的起始位置。N 是您可能要刪除的條目數。
前任:
for i in {1..50}; do history -d 1030; done