CentOS7上使用history刪除部分歷史記錄

因爲誤操做誤登陸了別人的服務器,作了一系列操做後,忽然發覺不對,趕忙銷燬現場。
使用history命令刪除本次登陸後作過的歷史記錄,可是保留原始的記錄。
首先使用help history,命令查看幫助文檔:linux

[root@10 ~]# help history
history: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 參數 [參數...]
    顯示或操縱歷史列表。
    
    帶行號顯示歷史列表,將每一個被修改的條目加上前綴 `*'。
    參數 N 會僅列出最後的 N 個條目。
    
    選項:
      -c        刪除全部條目從而清空歷史列表。
      -d 偏移量 從指定位置刪除歷史列表。
    
      -a        將當前繪畫的歷史行追加到歷史文件中
      -n        從歷史文件中讀取全部未被讀取的行
      -r        讀取歷史文件並將內容追加到歷史列表中
        中
      -w        將當前歷史寫入到歷史文件中
        並追加到歷史列表中
    
      -p        對每個 ARG 參數展開歷史並顯示結果
        而不存儲到歷史列表中
      -s        以單條記錄追加 ARG 到歷史列表中
    
    若是給定了 FILENAME 文件名,則它將被做爲歷史文件。不然
    若是 $HISTFILE 變量有值的話使用之,否則使用 ~/.bash_history 文件。
    
    若是 $HISTTIMEFORMAT 變量被設定而且不爲空,它的值會被用於
    strftime(3) 的格式字符串來打印與每個顯示的歷史條目想關聯的時
    間戳,不然不打印時間戳。
    
    退出狀態:
    返回成功,除非使用了無效的選項或者發生錯誤。

清空歷史記錄

一般使用history -c能夠清除掉緩存,可是因爲使用不一樣的用戶登陸,會在不一樣的用戶目錄中建立~/.bash_history文件,因此要想完全刪除,還須要將.bash_history中的內容清空。
一鍵命令:
history -c && >~/.bash_historyweb

刪除某一條歷史記錄

若是隻是想要刪除某一條歷史記錄,可使用history -d 第幾條命令,在幫助文檔中也有說明。緩存

刪除當前會話執行命令的記錄

因爲登陸後,history命令都會保存在內存中,前操做的其實都是存在在內存中的歷史記錄緩存。在使用history命令後,會將當前操做寫入~/.bash_history文件,而後打印出來。若是沒有執行history命令的話,直接使用history -r,會將文件中的歷史記錄在此刷入緩存,那麼以前操做的記錄就不會保存了。bash

隨意更新歷史記錄

若是已經使用history或者history -a將歷史記錄寫入~/.bash_history文件的話,那麼直接操做~/.bash_history文件就能夠直接修改歷史記錄了。能夠改爲任意的樣子。
修改完成後,執行:服務器

  1. history -c清空當前會話中的歷史記錄緩存
  2. history -r讀取~/.bash_history文件中的歷史記錄到緩存中

能夠看到已經更新了。
有一條命令能夠一鍵執行:
sed -i 'n,1000d' -i ~/.bash_history && history -c && history -r
其中,n爲從哪一條開始刪除,命令能夠打印出更新後的.bash_history文件內容。svg