『忘了再學』Shell基礎 — 4、Bash基本功能(history命令)

繁華似錦Fighting發表於2022-03-28

在Linux系統中預設的Shell就是Bourne-AgainShell(簡稱Bash),所以我們今天來掌握Bash的一些基本用法。

1、history歷史命令

(1)歷史命令的檢視

在終端執行history命令,就會顯示出在系統當中已經執行過的命令。

[root@localhost ~] # history [選項] [歷史命令儲存檔案]

選項:

  • -c:清空歷史命令。
  • -w:把快取中的歷史命令寫入歷史命令儲存檔案。如果不手工指定歷史命令儲存檔案,則放入預設的歷史命令儲存檔案~/.bash_history中。

(2)history用法說明

1)直接執行history命令,檢視歷史命令。

image

2)-w選項的用法。

我們使用history命令檢視的歷史命令,和~/.bash_history檔案中儲存的歷史命令是不同的。那是因為當前登陸的系統中,所操作的命令並沒有直接寫入~/.bash_history檔案,而是儲存在快取當中的。需要等當前使用者登出之後,快取中的命令才會寫入~/.bash_history檔案。如果我們需要把記憶體中的命令直接寫入~/.bash_history檔案,而不等使用者登出時再寫入,就需要使用-w選項了。

命令如下:把快取中的歷史命令直接寫入~/.bash_history檔案。

[root@localhost ~] # history -w

這時再去查詢~/.bash_history檔案,歷史命令檔案中的內容,就和history命令查詢的一致了。

注意:歷史命令最終是要寫入到檔案中的,所以說歷史命令是永久生效的,重啟也不會消失的。

3)~/.bash_history檔案是在使用者的家目錄下,說明~/.bash_history檔案只儲存當前使用者執行過的命令。也就是root使用者的命令歷史,儲存在root目錄下的.bash_history檔案中,user1使用者的命令歷史,儲存在user1目錄下的.bash_history檔案中。

2、設定命令歷史記錄的條數

我們Linux系統中,預設記錄的歷史命令條數是1000條。

這個屬性的配置內容,是在/etc/profile檔案中。

執行:

[root@localhost ~] # vim /etc/profile

檔案中的HISTSIZE屬性,如下圖:

image

說明:

  • 我們之前說過/etc/profile檔案的,在說umask值的時候。
  • /etc/profile檔案裡存放的是系統的環境變數,對所有使用者都有效果,要對其更改的話,必須要在root使用者許可權下才能進行。
  • 我們可以使用env命令來檢視系統當前所有的環境變數,set命令可以檢視所有本地定義的Shell變數。
  • 我們在/etc/profile裡面修改的話,是對所有使用者起作用,所以一般所有使用者都要使用的環境變數,就應該放在該檔案裡面,這樣系統執行之後該檔案裡面的環境變數都會生效。

這個歷史命令記錄條數一般建議多設定些。因為這個歷史記錄是存在硬碟上的,不會被載入到記憶體中,多些歷史命令的記錄,有很多時候可以方便我們操作。

3、清空歷史命令

如果需要清空歷史命令,只需要執行:

[root@localhost ~] # history -c

執行上邊命令,會把當前系統中記憶體緩衝區中的歷史命令,和當前使用者的~/.bash_history檔案中的歷史命令,一起刪除。

一般我們不建議使用該命令,因為使用歷史命令是我們在使用Linux系統時常用的操作,方便操作的同時,還可以判斷你之前對系統做過什麼操作。只有在極特殊的情況下,才執行清空歷史命令的操作,如給MySQL設定完密碼之後,建議清空歷史命令。因為MySQL設定密碼的命令,是明文顯示的。

4、歷史命令的呼叫

如果想要使用原先的歷史命令有以下幾種方法:

  • 使用上、下箭頭呼叫 以前的歷史命令。
  • 使用!n重複執行第n條歷史命令。
    image
    前邊的數字就是n
  • 使用!!重複執行上一條命令。
    (還不如用上箭頭直觀一點。)
  • 使用!字串重複執行最後一條,以該字串開頭的命令。
    (數字越大,越靠後。)
  • 使用!$重複上一條命令的最後一個引數。
    只能列印引數,一般不能夠獨立執行,Shell指令碼中會用到。
    image

5、命令與檔案的補全

Tab鍵可以對命令和檔名進行補全。

這裡就是告訴你,Tab鍵補全是Shell的功能。

相關文章