shell 介紹及命令歷史

1、什麼是 shell ?

shell 介紹及命令歷史

打開系統,輸入 zs ,按下 Tab 鍵,出現下圖命令 zsoelim ,
shell 介紹及命令歷史
說明沒有 zsh 命令,這時候可以安裝一下,先輸入命令 yum list |grep zsh ,回車,搜索一下,
shell 介紹及命令歷史
可以看出有 zsh 命令,也有 ksh 命令,這邊我們就不安裝了。

2、命令歷史

shell 介紹及命令歷史

我們執行過的命令,實際上是有保存到一個文件的。按向上的方向鍵,可以查看之前的命令,那麼這些命令在哪邊被保存的呢?有一個文件在用戶的加目錄下,root 用戶見下圖,
shell 介紹及命令歷史
可以 cat 查看,命令非常多,截取一部分,見下圖,
shell 介紹及命令歷史
要想知道之前執行過的命令有多少條,可以用 history 命令查看,輸入 history ,回車,截取一部分圖品,見下圖,
shell 介紹及命令歷史

可以看到之前的歷史是 672 條,那麼這個文件 .bash_history 最大可以存儲 1000 條命令。這一點可以通過環境變量 HISTSIZE 查詢,見下圖,
shell 介紹及命令歷史
還有一個命令 history -c ,可以把當前的歷史命令清空,見下圖,
shell 介紹及命令歷史
那麼該命令可以清空配置文件嗎?輸入命令 cat .bash_history ,回車,見下圖,
shell 介紹及命令歷史
可以看到配置文件的內容,沒有被清空,說明 history -c 命令僅僅是把內存當中的命令歷史清空而已,此時使用向上方向鍵,也查看不到之前的歷史命令,只有剛剛的幾條命令。
shell 介紹及命令歷史
那麼我們執行過的命令,什麼時候會保存到這個文件裏去呢?舉個例子,
shell 介紹及命令歷史
現在執行三次 ls 命令,然後再輸入命令 cat .bash_history ,回車,
shell 介紹及命令歷史
可以看到,這些命令的最後幾行,並沒有 ls ,再次使用 history 查看,見下圖,
shell 介紹及命令歷史
此時就可以看到 ls 命令,說明剛剛執行過的命令,目前只存在與內存中,只有退出終端之後,這些命令纔可以保存到配置文件 .bash_history 中。

環境變量 HISTSIZE 去哪裏定義呢?在 /etc/profile 中,使用 vi /etc/profile 命令進入,搜索一下HIST,
shell 介紹及命令歷史
HISTSIZE 默認的量是1000 。
shell 介紹及命令歷史
覺得太少的話,可以改成5000 。按字母 i 進入編輯,完成之後,按 Esc 退出編輯,輸入 :wq ,保存後退出。
shell 介紹及命令歷史
更改完數值之後,不會馬上變成5000,需要執行一下 source 命令,纔可以生效,見下圖,
shell 介紹及命令歷史

現在來看一下 history 命令,
shell 介紹及命令歷史
上圖中,只顯示了 ID 號和具體的命令,能不能將對應的命令的運行時間記錄下來,這就需要對 HISTSIZE 重新賦值,見下圖,
shell 介紹及命令歷史
這邊需要注意一下,這次更改的賦值,僅對當前的終端操作有效,再次打開終端以後,就會失效。也就是說,系統默認環境變量是不存在的,不要去定義。這時候,再執行 history 命令,
shell 介紹及命令歷史
就會看到,命令歷史的格式發生了改變,會記錄命令的運行日期和時間。以上改變就是環境變量作用的結果。要讓改變生效,可以編輯 /etc/profile 文件,輸入命令 vim /etc/profile ,回車,見下圖,
shell 介紹及命令歷史
搜索 HIST ,見下圖,
shell 介紹及命令歷史
增加一行上圖紅色框框的內容,保存後退出,執行命令 source ,
shell 介紹及命令歷史
退出 Putty ,再重新登錄,執行 history 命令,見下圖,
shell 介紹及命令歷史
可以看到,日期和時間永久生效了。

接着做實驗,見下圖,
shell 介紹及命令歷史
執行上圖這條命令以後,這個文件就只能追加,不能刪除。
終端沒有正常退出時,history 裏面就不會保存本次執行過的命令或者保存的命令不全。

另外再講一下,!! ,!n(n表示數字) ,!word(word表示命令單詞) ,詳見下圖,
shell 介紹及命令歷史

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章