0402 第十次課:shell基礎(上)
shell基礎上
一、shell介紹
shell是一個命令直譯器,它在作業系統的最外層,負責直接與使用者對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕返回給使用者。這種對話方式可以是互動的方式(從鍵盤輸入命令,可以立即得到shell的迴應),或非互動(指令碼)的方式。換句話說,Shell是一個命令列直譯器,它為使用者提供一個像Linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用Shell來啟動,掛起,停止甚至是編寫一些程式。 Shell還是一個功能相當請打的程式語言,易編寫,易除錯,靈活性較強。Shell是解釋執行的指令碼語言,在Shell中可以直接呼叫Linux系統命令。
-
每個使用者都可以有自己特定的shell
-
CentOS7預設shell為bash(Bourne Agin Shell)
-
還有zsh、ksh等,這shell預設是不安裝的,使用需要進行安裝
-
shell支援特定語法,比如邏輯判斷、迴圈(if for whell)
二、歷史命令
-
命令歷史查檢視
使用過的命令歷史存放在使用者家目錄下的.bash_history檔案中,可以通過history命令檢視命令使用歷史
-
歷史命令儲存
1.可以通過:echo $HISTSIZE 檢視多可以儲存多少條歷史命令,預設為:1000條。
2.history -c 可以清除歷史命令,但是不能清除.bash_history檔案中的歷史命令
3.歷史記錄只有退出終端的時候才會儲存到.bash_history檔案中,非正常關閉終端使用過的命令不會儲存。
4.環境變數HISTSIZE的大小可以在/etc/profile中修改HISTSIZE引數,改完source或者退出終端重新登入生效
-
命令歷史格式修改
1、修改前
2、臨時修改
HISTTIMEFORMAT="%Y/%m/%d %H:%M"
3、永久修改
/etc/profile中加入:
HISTTIMEFORMAT="%Y/%m/%d %H:%M "
-
命令永久儲存
如果想把命令永久儲存,不想別人刪除,那可以把.bash_history檔案加上a許可權,使檔案只能新增不能刪除。
chattr -a ~/.bash_history
-
命令歷史快捷鍵
-
!!: 執行最後一次執行的命令
-
!+ 數字: 執行命令歷史中對應數字的命令
-
!+xx: 執行以xx開頭的最後一條命令
-
三、命令補全
-
centos7中引數補全
centos6中只能tab進行命令補全,centos7中可以支援引數補全。
默然是不支援的需要安裝bash-completion,ctrl+d退出,重新登入後生效。
安裝:
yum -y install bash-completion
重啟:
reboot
完成後測試:
-
命令別名
如果覺得有些命令比較長和繁瑣,可以使用給這些命令起一個別名,起別名的命令:alias
用法:alias 別名='具體命令'
-
檢視已有的別名
命令:alias
-
取消自定義的別名
命令:unalias 別名
四、萬用字元
-
"*" :表示0或者多個任意字元
如:*.txt 列出所有以.txt結尾檔案
-
? : 一個任意字元
如:?.txt 列出一個任意字元的.txt檔案
-
如:[123].txt 會列出1.txt 2.txt 3.txt
它也可以支援字母
示例:
列出:1-9
列出:1-9 和a-z
-
{} :列出花括號裡面開頭
如:{}.txt: 列出花括號內開頭帶有.txt
示例:
五、輸出輸入重定向
-
輸出重定向:
1.> :左邊輸出重定向到右邊
如:cat 1.txt > 2.txt 會把1.txt的內容重定向到2.txt中
2.>>:左邊輸出追加到右邊
如:at 1.txt >> 2.txt 會把1.txt的內容追加到2.txt中
3.2> :錯誤重定向
如:輸入一個錯誤的命令,加上2> 它會把錯誤資訊重定向到2.txt中。
4.2>>: 錯誤追加重定向
5.&> 是 > 和 2> 結合 ,會把正確和錯誤資訊全部重定向。
-
輸入重定向
把右邊的檔案輸入到左邊的命令中
如:把2.txt的內容輸入到wc -l命令中進行統計行數