2011年2月1日 星期二

[Linux 命令] history : 列出使用過的指令

屬性 : 系統相關 - 其他 
語法 : 
history [欲查詢最近其他使用過的指令個數] [參數] 
!! <執行最近一次執行的命令> 
![history 中的編號] <執行history編號的命令> 

執行範例 : 
* 列出最近5個使用的指令 
allentest:~ # history 5 
910 history 5 
911 head -c 20 aa.txt 
912 clear 
913 cat aa.txt 
914 history 5 

* 執行前一次執行指令 
allentest:~ # !! 
history 5 
910 history 5 
911 head -c 20 aa.txt 
912 clear 
913 cat aa.txt 
914 history 5 

* 執行編號為913的指令 
allentest:~ # !913 
cat aa.txt 
line 1 : test 
line 2 : test 
line 3 : test 
line 4 : test 
line 5 : test 
line 6 : test 
line 7 : test 


如果你經常使用Linux命令,那麼使用history命令無疑會提升你的工作效率。
History命令主要用於顯示歷史指令記錄內容, 下達歷史紀錄中的指令 。
1>History命令語法:

[test@linux]# history [n]
[test@linux]# history [-c]
[test@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命令不僅僅讓我們可以查詢歷史命令而已. 我們還可以利用相關的功能來幫我們執行命令。
2>運行特定的歷史命令
history會列出bash保存的所有歷史命令,並且給它們編了號,我們可以使用“歎號接編號”的方式運行特定的歷史命令.
語法說明:
[test@linux]# [!number] [!command] [!!]
參數說明:
number :第幾個指令的意思;
command :指令的開頭幾個字母
! :上一個指令的意思!

3>History命令實戰

[test@linux] # history <列出所有的歷史記錄:>

[test@linux] # history 10 <只列出最近10條記錄:(注,history和10中間有空格)>

[test@linux] #!99 <使用命令記錄號碼執行命令,執行歷史清單中的第99條命令>

[test@linux] #!! <重復執行上一個命令>

[test@linux] #!rpm <執行最後一次以rpm開頭的命令(!? ?代表的是字符串,這個String可以隨便輸,Shell會從最後一條歷史命令向前搜索,最先匹配的一條命令將會得到執行。)>

[test@linux]# history | more [color=brown]<逐屏列出所有的歷史記錄:>

[test@linux] #history -c <立即清空history當前所有歷史命令的記錄>


補充說明 : 
1. history 可記錄使用過的指令, 這對於使用過指令追蹤與安全的管控是很重要的. 
2. History命令的用途確實很大!但需要小心安全的問題!尤其是 root 的歷史紀錄檔案,這是黑客們的最愛!因為不小心的 root 會將很多的重要資料在執行的過程中會被紀錄在~/.bash_history 當中,如果這個檔案被解析的話,後果不堪設想! 

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...