1. 程式人生 > >shell介紹,命令歷史,命令補全和別名,萬用字元,輸入輸出重定向,管道符和作業控制

shell介紹,命令歷史,命令補全和別名,萬用字元,輸入輸出重定向,管道符和作業控制

shell介紹

  • 可以使用 yum list |grep zsh 或者 yum list |grep ksh
  • 這樣可以搜尋 zsh 和 ksh ,有需要的話可以安裝
  • 總之,預設使用的就是 .bash shell

命令歷史

  • 輸入過的命令會被儲存在一個檔案內
  • 在shell介面,使用 上方向鍵 可以往上檢視之前輸入過的命令
  • 這個儲存命令的檔案地址在使用者家目錄下面
  • 例子:root 使用者的家目錄就是 /root
  • 儲存過往命令的檔名稱是 .bash_history
  • 那麼root使用者儲存過往命令的檔案路徑就在 /root/.bash_history
  • 使用 history 命令就可以檢視記錄了多少條過往命令
  • 上圖可以看到,輸入的最後一條命令是 history
  • 序號是1003,說明.bash_history已經記錄了1003條過往命令
  • 不過 .bash_history 最多隻能儲存1000條命令
  • 往上翻,可以看到,命令是從序號 4 開始的
  • 因為記錄到1003條命令,但只能存1000條命令,所以最前面的3條命令被刪除了
  • 有一個系統內建的環境變數 HISTSIZE
  • 使用上圖命令,可以看到返回的值是 1000
  • 所以 .bash_history 最大記錄的命令數量為1000
  • 使用 history -c 命令可以清空當前 .bash_history 的內容
  • 不過 history -c 只是清空記憶體中的內容,寫進硬碟的內容並不會被清空
  • 使用終端時輸入的命令都是儲存在記憶體裡面的
  • 退出終端的時候才會被寫入硬碟
  • HISTSIZE 環境變數可以被修改
  • 可以在 /etc/profile 檔案中修改
  • vi 開啟 profile 檔案,然後找到上圖中的這個變數
  • 將變數數值修改為自己想要的數值,然後儲存退出
  • 不過現在修改還沒有生效,需要執行命令 source /etc/profile
  • 這樣修改才會生效,可以使用 echo $HISTSIZE 檢視是否生效
  • 或者退出終端,然後重新進入後也會生效
  • 如果想把命令輸入的時間也記錄進 .bash_history
  • 可以使用上圖的命令,首先賦值給環境變數 HISTTIMEFORMAT
  • "%Y%m%d %H:%M:%S " 代表時間的格式:年月日 時:分:秒
  • 使用 echo $HISTTIMEFORMAT 檢視格式的值是否改變了
  • 可以看到下面返回的值是 "%Y/%m/%d %H:%M:%S "
  • 系統預設 HISTTIMEFORMAT 的值為空,所以新建一個終端這個變數的值是為空的
  • 如圖,可以看到,再使用 history 命令檢視記錄在記憶體裡面的過往命令
  • 每一條過往命令都增加了使用時間的記錄
  • 如果希望永久保留這個設定,而不是每次開啟終端都要重新設定一遍
  • 可以在 /etc/profile 檔案裡面設定這一個變數
  • 用 vim 開啟 profile
  • 如圖,找到 HISTSIZE,在它的下面增加一行,HISTTIMEFORMAT
  • 就把之前設定變數的格式複製到這裡,然後儲存退出
  • 然後需要 source /etc/profile 一下使其生效
  • 然後重新進入終端
  • 可以發現,預設 HISTTIMEFORMAT 的值已經是之前設定的格式了
  • 上圖命令是對 .bash_history 檔案追加 a 許可權
  • 增加 a 許可權後,這個檔案就只能被追加資訊,而不會被刪除資訊
  • 這樣就可以無限的儲存命令到這個命令歷史檔案裡面了
  • 但是如果不正常退出終端的話,有可能過往命令會儲存不全
  • 正常退出終端需要使用命令 logout 或者 exit

  • 命令 !! 會執行上一條命令,也就是說命令歷史裡面記錄的最後一條命令
  • 比如使用 ls 命令後,再使用 !! 命令
  • 那麼就會再執行一次 ls 命令,因為上一條命令是 ls

  • 命令 !n ,n代表數字
  • 使用命令 history 檢視命令歷史,每一條命令都有一個id號碼
  • 例子,使用命令 !768 那麼就會執行命令歷史裡面id為768的命令

  • 命令 !word ,word代表單詞
  • 比如在命令歷史裡面,總共使用了3次 ls /root 命令
  • 然後使用命令 !ls
  • 那麼就會執行命令歷史裡面最後一次 ls 命令
  • 也可以使用 !vim 或者 !echo
  • 那麼也會執行命令歷史裡面最後一次使用 vim 或者