shell是作業系統中重要的應用,尤其對linux這種指令行模式的作業系統,shell具有重要的意義。
shell是一個指令解釋器,提供使用者和機器之間的互動。每次我們登入系統後,出現的界面就是shell,相當于我們在界面輸入指令,shell把我們輸入的内容轉換成系統能夠了解的内容傳遞給系統去執行。shell支援特定的文法,有點像c語言,支援邏輯判斷,if while語句。

這就是基本的shell。
centos7預設的shell是bash,系統中還支援其他類型的shell,比如zsh、ksh。
centos7系統中目前使用者輸入的指令都儲存在使用者的家目錄下,比如root使用者指令就存在/root/.bash_history檔案中。
這個檔案能儲存的指令的數量由HISTSIZE變量決定。這個變量初始值為1000
每次退出終端時,你敲過的指令就會儲存在/root/.bash_history檔案中。
HISTSIZE變量值的設定在/etc/profile中,這個檔案中能夠更改很多系統的參數,包括記錄指令的數量,記錄指令的格式等等。
1、修改系統記錄的指令數量
在/etc/profile檔案中操作,用vi或者vim打開,定位到46行(順便複習下vim指令,46j)
更改框中數值為你想要的數值,比如說5000
儲存退出,用source指令重載下下 系統的profile使改動生效
看下結果,搞定!
2、修改記錄内容,記錄每條指令執行的時間
分兩種情況,一種是僅對目前終端生效,斷開後失效。
指令:<code>HISTTIMEFORMAT="%Y%m%d %H:%M:%S"</code>
永久在/root/.bash_history增加這個内容需要更改/etc/profile檔案,操作如下:
跟前面一個例子一樣,在/etc/profile檔案中操作,用vi或者vim打開,定位到46行(順便複習下vim指令,46j)
在HISTSIZE行下加入“HISTTIMEFORMAT="%Y%m%d %H:%M:%S"”内容
斷開連接配接重登下系統,看結果,搞定!
3、永久儲存指令的曆史紀錄
隻要給目前使用者的家目錄中的/root/.bash_history檔案加上+a權限即可,即使你設定了HISTSIZE的大小,他仍然會記錄你輸入的所有指令。
指令:chattr +a ~/.bash_history
4、執行history記錄中最後一條指令
指令:!!(兩個感歎号)
5、運作第XX條指令
指令:!X(數字)
6、執行曆史紀錄中最近的一條以條關鍵字開頭的那條曆史指令
比如我要執行最近一條init開頭的指令,輸入!init 他就會執行history記錄中最近的那條。可以看到是init 0.
1、tab補全指令
我們敲指令時可以按Tab鍵
比如說我們按ls這時按兩下Tab鍵他就會把所有ls開頭的指令全部列出來
2、tab補全指令參數
需要安裝“bash-completion”包才能支援
yum安裝
重新開機電腦(不然不生效)
檢查下安裝情況,生效了
3、指令的别名(alias)
别名功能也是系統shell的重要應用
檢視系統已定義的alias
4、自定義自己的别名指令
每個使用者都有自己的别名配置檔案,預設在~/.bashrc檔案中,還有一些系統定義的别名,在/etc/peofile.d下。
示例:
1)将重新開機網絡指令做别名
指令:`alias restartnet='systemctl restart network.service'
2)檢視使用者自定義的alias
在檔案~/.bashrc中看
指令:vim ~/.bashrc
3)檢視系統定義的一些别名
指令:ls etc/profile.d
我們檢視其中一個,比如colorgrep.sh
4)取消自定義的别名
(一)通配符
系統中包含了很多通配符,常見的有
:表示通配,可以代表文字
?:表示一個任意的字元,但是不能代表數字
[] :任選方括号裡的任意一個字元
{}:比對大括号裡的任意字元,隻是選項間要加逗号
在一個檔案夾下建立一些檔案示範各個通配符的用法
本身檔案夾中檔案
1、ls .txt
2、ls ?.txt(注意這裡要用英文的問号,中文輸入法的問号系統不認)
3、ls [123a].txt
4、ls {1,2,a}.txt
(二)輸入輸出重定向
重定向主要應用在編寫shell腳本時,我們可以把shell執行的結果區分輸出到不同的檔案中
,輸出重定向 <,輸入重定向,很少用 >,追加重定向(重定向表示不删除前面的内容) <<,追加輸入重定向() 2>,标準錯誤輸出重定向 2>>,錯誤追加重定向 +2>==&>,全部重定向,即把正确錯誤資訊全部輸出到1個檔案中 &>>全部追加重定向 指令 > 1.txt 2.txt 還可以把正确和錯誤的資訊分别輸出到不同的檔案
示例
1、把指令執行的結果輸入到1.txt中
指令 df -h > 1.txt
2、把指令執行的正确結果和錯誤結果分别輸出
指令 tar -cjvf 1tar.bz2 2.txt 3.txt b.txt >1.txt 2>a.txt
本文轉自 whytl 51CTO部落格,原文連結:http://blog.51cto.com/11934539/2059372