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


在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的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM