history命令詳解

2022-03-21 22:17:23 字數 3260 閱讀 5156

linux下history命令主要用於顯示歷史指令記錄內容, 下達歷史紀錄中的指令 。

>history命令語法:

[www.linuxidc.com@linux]# history [n]

[www.linuxidc.com@linux]# history [-c]

[www.linuxidc.com@linux]# history [-raw] histfiles

引數:n  :數字,要列出最近的 n 筆命令列表

-c :將目前的shell中的所有 history 內容全部消除

-a :將目前新增的history 指令新增入 histfiles 中,若沒有加 histfiles,則預設寫入 ~/.bash_history

-r :將 histfiles 的內容讀到目前這個 shell 的 history 記憶中

-w :將目前的 history 記憶內容寫入 histfiles。linux系統當你在shell(控制台)中輸入並執行命令時,shell會自動把你的命令記錄到歷史列表中,一般儲存在使用者目錄下的.bash_history檔案中。預設儲存1000條,你也可以更改這個值。如果你鍵入 history, history會向你顯示你所使用的前1000個歷史命令,並且給它們編了號,你會看到乙個用數字編號的列表快速從螢幕上捲過。你可能不需要檢視1000個命令中的所有專案, 當然你也可以加入數字來列出最近的 n 筆命令列表。linux中history命令不僅僅讓我們可以查詢歷史命令而已. 我們還可以利用相關的功能來幫我們執行命令。執行特定的歷史命令history會列出bash儲存的所有歷史命令,並且給它們編了號,我們可以使用「嘆號接編號」的方式執行特定的歷史命令.

語法說明:

[www.linuxidc.com@linux]# [!number] [!command] [!!]

引數說明:

number :第幾個指令的意思; 

command  :指令的開頭幾個字母 

! :上乙個指令的意思!

history命令實戰

1.出所有的歷史記錄:

[www.linuxidc.com@linux] # history

2.只列出最近10條記錄:

[www.linuxidc.com@linux] # history 10 (注,history和10中間有空格)

3.使用命令記錄號碼執行命令,執行歷史清單中的第99條命令

[www.linuxidc.com@linux] #!99 (!和99中間沒有空格)

4.重複執行上乙個命令

[www.linuxidc.com@linux] #!!

5.執行最後一次以rpm開頭的命令(!代表的是字串,這個string可以隨便輸,shell會從最後一條歷史命令向前搜尋,最先匹配的一條命令將會得到執行。)

[www.linuxidc.com@linux] #!rpm

6.逐屏列出所有的歷史記錄:

[www.linuxidc.com@linux]# history | more

7.立即清空history當前所有歷史命令的記錄

[www.linuxidc.com@linux] #history -c

除了使用history命令,在 shell 或 gui 終端提示下,你也可以使用上下方向鍵來翻閱命令歷史(向下箭頭會向前翻閱),直到你找到所需命令為止。這可以讓我們很方便地編輯前面的某一條命令,而不用重複輸入類似的命令。history命令的用途確實很大!但需要小心安全的問題!尤其是 root 的歷史紀錄檔案,這是黑客們的最愛!因為不小心的 root 會將很多的重要資料在執行的過程中會被紀錄在 ~/.bash_history 當中,如果這個檔案被解析的話,後果不堪設想!

history是一條非常實用的shell命令,可以顯示出之前在shell中執行的命令,配合last顯示之前登入的使用者,就可以追溯是哪個使用者執行了某些命令。以下詳細說明history使用中常見的命令或技巧,在實際系統管理中,應用得當,可以讓工作事半功倍。

預設情況下,history並不記錄命令的執行時間,分析起來很困難。

# 這時候可以配置histtimeformat環境變數,給history記錄新增上時間戳

export histtimeformat="%f %t "

把上面的export命令加入到~/.bashrc中即可在登入後自動開啟history時間戳了。

其實histtimeformat的格式就是 strftime函式的格式,比如上面的"%f %t ",%f表示顯示出y-m-d格式的日期,%t表示顯示出h-m-s這樣格式的時間。更多的格式,可以參考 man strftime。

本人最常使用的history特性,當你執行了一串相當長的命令之後,你只要用關鍵字搜尋一下歷史命令然後重新執行這條命令而不需要將整條命令再輸一遍。方法是:按下ctrl+r然後輸入關鍵字。在以下示例中,我搜尋」cat」,則顯示以前的命令中含有」cat」的命令「cat anaconda-ks.cfg」。按回車,就可以重新執行這條命令了,而按左箭頭鍵或右箭頭鍵則可以直接修改,改完之後按回車執行,非常方便!

【注:在命令列提示符下按下ctrl+r,終端將顯示如下提示reverse-i-search】

# 記憶體中的history條數,退出登陸之後會寫到~/.bash_history檔案裡

export histsize=450

# 檔案中儲存的最大history條數,檔案:~/.bash_history

export histfilesize=450

# 如果你想禁用history,不讓shell記錄命令,把histsize設為0即可

export histsize=0

預設情況下,命令歷史被儲存在.bash_history檔案中,把下面的一行新增到.bash_profile檔案中,重新登入shell,則新檔案將取代.bash_history檔案用來儲存歷史命令。你可以使用這個命令來追蹤不同終端中執行的命令,屆時只需要將不同終端中所執行的命令儲存在不同的歷史檔案中即可。

[root@rocket ~]# vim ./.bashrc

histfile=/root/my_history

重新登陸可以看到新history file已經生效

export histcontrol=ignoredups

export histcontrol=erasedups

#清除之前的歷史命令

history -c

有時你不想在記錄裡看到諸如「pwd」,ls」之類的基本指令,可以用histignore忽略這些指令。

注意在histignore中新增「ls」,只忽略「ls」不忽略「ls –l」。一定要準確的寫出要忽略的指令。

export histignore=」pwd:ls:history」

Linux 中history命令詳解

history 選項 引數 引數 含義備註 n顯示最近的n條記錄 a將歷史命令緩衝區中命令寫入歷史命令檔案中 c將目前的shell中的所有 history 內容全部消除實際為假刪除 r將歷史命令檔案中的命令讀入當前歷史命令緩衝區 w將當前歷史命令緩衝區命令寫入歷史命令檔案中 d刪除歷史記錄中指定的行...

history命令歷史

history我不用多說了吧,這個命令就是看你在當前使用者下所有執行的命令歷史 預設命令歷史儲存為1000條 可用echo histsize檢視,系統使用者可以在 etc profile或者普通使用者.bash profile下修改引數 histsize 200000 隨你改 最後source et...

玩轉History命令

history的歷史命令預設儲存在 bash history檔案中。可以直接清空此檔案內容的方式清空全部歷史記錄。下面是更方便的一些操作。清除全部記錄 history c本命令只能清除記憶體中的歷史記錄,只有在登出的時候才會改變.bash history檔案。可以執行命令 history w 立即更...