1. 程式人生 > >shell介紹,命令歷史記錄,命令和文件名自動補齊;通配符和輸入輸出重定向

shell介紹,命令歷史記錄,命令和文件名自動補齊;通配符和輸入輸出重定向

數字 51cto ksh 開頭 chat inux shell images 重定向

shell介紹

Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。
在計算機硬件之間還有一層東西——系統內核。如果把計算機硬件比作一個人的軀體,那系統內核就是人的大腦。至於shell,把它比作人的五官似乎更貼切些。言歸正傳,用戶直接面對的不是計算機硬件而是shell,用戶把指令告訴shell,然後shell再傳給系統內核,接著內核再去支配計算機硬件去執行各種操作。
Bash (GNU Bourne-Again Shell) 是許多Linux發行版的默認Shell。事實上,還有許多傳統UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都類同,當您學會一種Shell以後,其它的Shell會很快就上手,大多數的時候,一個Shell Script通常可以在很多種Shell上使用。

1、記錄歷史命令

我們敲過的命令,linux是會有記錄的,預設可以記錄1000條歷史命令。這些命令保存在用戶的家目錄中的.bash_history文件中。有一點需要你知道的是,只有當用戶正常退出當前shell時,在當前shell中運行的命令才會保存至.bash_history文件中。

# history              //查看命令歷史記錄

技術分享圖片

# cat ~/.bash_history             //命令歷保存在這個文件

技術分享圖片

# echo $HISTSIZE           //查看當前系統可以保存多少條命令歷史
# vim /etc/profile       //修改HISTSIZE參數
# source /etc/profile         //使修改過的參數生效,否則無效

技術分享圖片
技術分享圖片

HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"            //設置參數顯示命令執行時間

技術分享圖片
但是這樣執行之後只是臨時顯示時間,重啟之後就失效了,如果需要永久顯示,則需要將該參數加入到配置文件中。

# vi /etc/profile    //加入HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"參數
# source /etc/profile   //是加入參數後的文件生效

技術分享圖片

chattr +a /root/.bash_history  //加上隱藏權限a,使這個文件只能追加,無法刪除修改,以永久保存命令歷史記錄

與歷史命令相關的一個特殊字符‘!’,常用的三個:

!!:連續兩個!表示執行上一條命令。

!字符串: 例如!cd表示執行命令歷史中最近一次以cd開頭的命令
!n:n表示數字,表示執行命令歷史中的第n條命令。

2、命令和文件自動補齊

最開始阿銘就介紹過這個功能了,記得嗎?它就是按tab鍵,它可以幫你補全一個指令,也可以幫你補全一個路徑或者一個文件名。連續按兩次tab鍵,系統則會把所有的指令或者文件名都列出來。
如果需要參數也能補齊,則需要安裝rpm包

# yum install -y bash-completion
# reboot    //重啟系統生效

安裝好之後,我們可以測試下,re開頭的參數:
技術分享圖片

3、通配符

在bash下,可以使用 * 來匹配零個或多個字符,而用 ? 匹配一個字符。
實例:
技術分享圖片

4、輸入/輸出重定向

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

輸入重定向的命令<,
輸出重定向的命令是>,
錯誤重定向命令2>,
追加重定向命令>>。

實例:
1、輸出重定向(覆蓋原來的)和追加重定向:
技術分享圖片
2、錯誤重定向:
技術分享圖片
3、輸出和錯誤同時重定向:
技術分享圖片
3、輸入重定向:
技術分享圖片

shell介紹,命令歷史記錄,命令和文件名自動補齊;通配符和輸入\輸出重定向