Shell是一個命令解釋器,它在操做系統的最外層,負責直接與用戶對話,把用戶的輸入解釋給操做系統,並處理各類各樣的操做系統的輸出結果,輸出到屏幕返回給用戶。這種對話方式能夠是交互的方式(從鍵盤輸入命令,能夠當即獲得shell的迴應),或非交互(腳本)的方式。換句話說,Shell是一個命令行解釋器,它爲用戶提供一個像Linux內核發送請求以便運行程序的界面系統級程序,用戶能夠用Shell來啓動,掛起,中止甚至是編寫一些程序。shell
Shell仍是一個功能至關請打的編程語言,易編寫,易調試,靈活性較強。Shell是解釋執行的腳本語言,在Shell中能夠直接調用Linux系統命令。編程
Linux Shell的種類不少,目前流行的Shell包括ash、bash、ksh、csh、zsh等。vim
1.ash
ash Shell是由Kenneth Almquist編寫的,是Linux 中佔用系統資源最少的一個小Shell,它只包含24個內部命令,於是使用起來很不方便。bash
2. bash
bash是Linux系統默認使用的Shell,它由Brian Fox 和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40 個。Linux 使用它做爲默認的Shell是由於它具備如下特點:編程語言
可使用相似DOS下面的doskey的功能,用上下方向鍵查閱和快速輸入並修改命令。性能
自動經過查找匹配的方式,給出以某字串開頭的命令。ui
包含了自身的幫助功能,你只要在提示符下面鍵入help就能夠獲得相關的幫助信息。spa
3. ksh
ksh是Korn Shell的縮寫,由Eric Gisin編寫,共有42 條內部命令。該Shell最大的優勢是幾乎和商業發行版的ksh 徹底相容,這樣就能夠在不用花錢購買商業版本的狀況下嘗試商業版本的性能了。操作系統
4. csh
csh 是Linux 比較大的內核,它由以William Joy 爲表明的共計47 位做者編成,共有52個內部命令。該Shell實際上是指向/bin/tcsh這樣的一個Shell,也就是說,csh其實就是tcsh。命令行
5. zch
zch是Linux 最大的Shell之一,由Paul Falstad完成,共有84 個內部命令。若是隻是通常的用途,沒有必要安裝這樣的Shell。
1.內部命令
內部命令內置於Shell源碼中,即存在於內存中,通常比較簡短,代碼量不多,執行起來速度快,常常會使用,好比cd、echo。它與shell自己處在同一進程內(它就寫在Shell這個程序裏面),當打開Shell時,操做系統會將Shell程序放入內存 。
2.外部命令
外部命令通常功能比較強大,包含的代碼量也較大,因此在系統加載時並不隨系統一塊兒被加載到內存中,而是在須要時才調用,它們是存在於文件系統中某個目錄下的單獨的程序,當執行外部命令時,會到文件系統中文件的目錄中尋找,例如 cp 、rm。
命令歷史
命令歷史保存在用戶的家目錄的.bash_history中 以root用戶爲例則在 /root/.bash_history
history 命令能夠查看命令歷史
用cat 命令能夠查看命令歷史文件
cat /root/.bash_history
CentOS7系統默認最多保存1000條命令歷史
能夠經過變量HISTSIZE查看
用命令 echo $HISTSIZE
命令歷史最大保存數量能夠經過更改配置文件來改變
配置文件路徑爲 /etc/profile
用 vim /etc/profile 打開配置文件
在vim中使用/HISTSIZE找到HISTSIZE所在位置
這裏能夠更改成本身想要的數量 我這裏修改成5000
修改好後記得保存退出
要想配置生效須要從新登陸終端或者執行命令 source /etc/profile
默認的命令歷史不太詳細能夠經過修改配置文件 /etc/profile 來給命令歷史添加日期和時間
在配置文件中添加變量 HISTTIMEFORMAT=" %Y/%m/%d %H:%M:%S "
保存退出
贊成須要 source /etc/profile
想要永久保存命令歷史 就是用命令 chattr +a ~/.bash_history
history -c 能夠清楚內存中的命令歷史 保存在 /etc/profile 中的不受影響
注:終端非正常關閉命令歷史會記錄不完善
!! 執行命令歷史裏的最後一條命令
!n 執行命令歷史裏的第n條命令
!Word 執行命令歷史裏最後一條這個Word的命令
在輸入命令時可使用tab鍵補全命令 按一下tab鍵若是命令沒有補全則存在多個以你當前輸入相同的開頭的命令 這時你須要按兩下tab鍵 列出全部相似命令找到你須要的繼續輸入
在CentOS7中還能夠補全命令參數 默認是不能的 要安裝bash_completion 來實現 安裝完成後重啓機器便可使用
alias命令能夠查看系統中使用了別名的命令
alias 別名 =' 原命令 ' 能夠定義別名
unalias 別名 能夠取消自定義別名
* 能夠匹配全部字符
? 匹配全部單個字符
[0-9] 匹配任意一個數字
[a-z] 匹配任意一個小寫字母
[A-Z]匹配任意一個大寫字母
[0-9a-zA-Z]匹配任意一個數字或字母
{1,2,3}匹配其中一個
> 輸出重定向 會刪除原有文檔內容
>>輸出追加劇定向 在原有文檔末尾增長
2>錯誤輸出重定向 會刪除原有文檔內容
2>>錯誤輸出追加劇定向 在原有文檔末尾增長
> 加 2> 等於 &> 正確和錯誤的一塊兒重定向到一個文件
正確和錯誤分別重定向到不一樣文件(下圖):
< 輸入重定向 左邊爲命令右邊是文件
友情連接:阿銘Linux