1. 程式人生 > >2018.1.10 5周3次課

2018.1.10 5周3次課

file 之一 mil msu 8.4 日期和時間 字符 路徑 邏輯

五周第三次課(1月10日)

8.1 shell介紹

8.2 命令歷史

8.3 命令補全和別名

8.4 通配符

8.5 輸入輸出重定向

8.1 shell介紹

shell是系統跟計算機硬件交互時使用的中間介質,它只是系統的一個工具。實際上,在shell和計算機硬件之間還有一層東西一一系統內核。如果把計算機硬件比作一個人的軀體,那系統內核就是人的大腦。至於shell,把它比作人的五官似乎更貼切些。言歸正傳,用戶直接面對的不是計算機硬件而是shell,用戶把指令告訴shell,然後shell再傳輸給系統內核,接著內核再去支配計算機硬件去執行各種操作。

  • shell是一個命令解釋器,提供用戶和機器之間的交互

  • 支持特定語法,比如邏輯判斷、循環

  • 每個用戶都可以有自己特定的shell

  • CentOS7默認shell為bash(Bourne Agin Shell)

  • 還有zsh、ksh等

8.2 命令歷史

我們執行過的命令Linux都會記錄,預設可以記錄1000條歷史命令。這些命令保存在用戶的家目錄的 .bash history文件中。但需要註意的是,只有當用戶正常退出當前shell時,在當前shell中運行的命令才會保存至 .bash _history文件中。

  • history命令

  • .bash_history

  • 最大1000條

技術分享圖片

技術分享圖片

清空當前內存中的歷史命令紀錄,用命令【history -c】

  • 變量HISTSIZE

技術分享圖片

  • 修改變量HISTSIZE在“/etc/profile”中修改

技術分享圖片

技術分享圖片

使修改後生效

技術分享圖片

  • HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

記錄歷史命令運行的日期和時間

技術分享圖片

要使命令生效,編輯“/etc/profile”文件

技術分享圖片

技術分享圖片

技術分享圖片

  • 只能追加,不能刪除 chattr +a ~/.bash_history

  • !!:連續兩個!表示執行上一條指令

技術分享圖片

  • !n:這裏的n是數字,表示執行命令歷史中的第n條指令。

技術分享圖片

技術分享圖片

  • !字符串(字符串大於等於1):例如!pw表示執行命令歷史中最近一次以pw開頭的命令。

技術分享圖片

技術分享圖片

8.3 命令補全和別名

  • tab鍵,敲一下,敲兩下

按tab鍵可以幫我們補全一個指令、一個路徑或者一個文件名。連續按兩次tab鍵,系統則會把所有的命令或者文件名都列出來。

  • 參數補全,安裝bash-completion

yum install -y bash-completion

安裝完成後需要重啟reboot後命令才能生效

  • alias別名給命令重新起個名字

alias,它也是bash所特有的功能之一。 我們可以通過alias把一個常用的並且很長的指令另取名為一個簡單易記的指令。直接執行alias命令,會看到目前系統預設的別名。

  • alias在哪裏定義的

  1. 用戶家目錄下: ~/.bashrc。自定義的alias放到 ~/.bashrc

技術分享圖片

技術分享圖片

  1. “/etc/profile.d/“裏

技術分享圖片

  • 如果不想用了,還可以使用unalias命令解除別名功能。

unalias [別名]

8.4 通配符

在bash下,可以使用*來匹配零個或多個字符,不分字符也不分幾個。

技術分享圖片

用?匹配一個字符和一個數字。

技術分享圖片

用[ ]來匹配,[ ]裏表示的是範圍,裏面取值只取1個

技術分享圖片

技術分享圖片

技術分享圖片

用{ }來匹配,{ }裏面的取值範圍要加,

技術分享圖片

8.5 輸入輸出重定向

輸人重定向用於改變命令的輸人,輸出重定向用於改變命令的輸出。輸出重定向更為常用,它經常用於將命令的結果輸人到文件中,而不是屏幕上。

輸人重定向的命令: <

技術分享圖片

輸出重定向的命令: >

追加重定向命令: >>

錯誤重定向命令:2>

追加錯誤重定向命令:2>>

技術分享圖片

錯誤和正常的輸出信息重定向命令:&>(寫在同一個文件裏)

技術分享圖片

追加錯誤和正常的輸出信息重定向命令:&>>(寫在同一個文件裏)

技術分享圖片

既有正確的輸出,又有錯誤的輸出。(寫在不同的個文件裏)

技術分享圖片


2018.1.10 5周3次課