Shell環境是是Linux使用者與Linux作業系統之間的互動界面。位于OS核心和使用者之間,負責接收使用者輸入的指令,在對已輸入的指令進行解釋後,将需要執行的指令程式傳遞給OS核心執行。
1、 Shell程式的産生和發展
概念:指令解釋器,如Windows的CMD.exe
發展:
Bsh:産生較早的Unix Shell程式,還是程式設計語言,可以進行編寫Shell腳本
Csh:C Shell縮寫,Bill Joy編寫,有C語言的風格,對指令行互動做了改進,增加了某些功能,更加适合指令互動
Ksh:結合Bsh和csh兩者功能優勢
Bash:是Bsh的更新,是GNU的成員,紅帽4使用其作為預設Shell
檢視目前系統可用的Shell:
#cat /etc/shells
Shell的替換:
臨時替換:直接在指令行下輸入 #Shell名字。臨時更改,登出或重新開機系統後恢複到原Shell
永久替換:直接修改檔案/etc/passwd或者使用指令:
#chsh 直接回車是修改自己的預設Shell,root使用者修改别人的Shell是指令#chsh 使用者名
2、Shell變量
環境變量:是使用者登入時Linux系統為使用者預先設定好的一類Shell變量
檢視:#set|more
檢視變量的值:#echo $變量名
常用環境變量:USER(使用者名) UID(使用者uid) SHELL(使用者預設登入shell) HOME(使用者宿主目錄) PWD(根目錄到目前目錄的路徑) PATH(使用者執行指令的預設搜尋路徑) PS1(使用者主提示符) PS2(使用者附注提示符)
環境變量配置檔案:
全局配置檔案:/etc/profile(負責設定全局的環境,并應用于所有的使用者登入shell)和/etc/bashrc(定義全局的函數和别名),隻有root有權限進行修改和設定
使用者環境變量配置檔案:位于使用者的宿主目錄中,是隐藏檔案。使用者自己可以修改來更改自己的環境變量。.bash_profile和.bashrc,兩個檔案的配置隻對目前使用者生效。/etc/skel目錄是使用者配置檔案模闆
位置變量:與shell腳本程式執行時所使用的指令參數相對應,指令行中的參數按照從左到右的順序指派為位置變量。格式是“$n”,n從1開始,最多到9。單引号,雙引号和反引号的使用
預定義變量:Linux系統中已經定義好的變量,使用者隻能使用預定義變量,通常用在Shell腳本中
$#表示位置參數的數量(個數)
$*表示所有位置參數的内容
$?表示指令執行後傳回的狀态,用于檢查上一個指令的執行是否正确;為0時表示指令正确執行,任何非0值表示指令執行錯誤
$$表示目前程序的程序号
$!表示背景運作的最後一個程序号
$0表示目前執行的程序名(表示指令本身)
使用者自定義變量:
格式:#變量名=變量值(指派不用加$)
顯示變量值:#echo $變量名
變量的輸出:#export 變量名,輸出變量為全局變量,在目前Shell的子Shell中也可使用
變量的清除:#unset 變量名
3、Bash常用功能:
指令行或檔案、目錄名的不全:使用“Tab鍵”
指令曆史和指令重複:使用指令history檢視,預設系統記1000個指令,使用“!指令号”執行此指令,儲存在使用者宿主目錄下的.bash_history中,使用指令history –c清除指令曆史,可以把此指令寫在.bash_logout中,登出時清空指令曆史
指令别名:可以提高效率和相容其他OS指令。
#alias 直接回車是顯示目前使用者所有的指令别名
定義别名:#alias name=value
取消:#unalias name
取消全部别名:#unalias –a
4、管道和重定向
标準輸入:0 鍵盤
标準輸出:1 顯示器
标準錯誤:2 顯示器
Wc指令是計算指定檔案中的行數、單詞數和字元數
輸入重定向:#wc < /etc/passwd,把由鍵盤輸入改為由檔案輸入
輸出重定向:把螢幕輸出改為輸出到檔案。#ls>lch.txt(檔案不存在,建立檔案;檔案存在則清空原檔案内容并寫入指令的執行結果)
>> 追加重定向:把内容添加到檔案的末尾,不清空原檔案内容
錯誤重定向:把錯誤的螢幕輸出改為輸出到檔案。使用“2>”符号;添加内容到檔案(檔案不存在,則建立;檔案存在,則清空其内容,寫入最後執行的結果);使用“2>>”符号:追加内容到檔案末尾,不覆寫以前的檔案内容
管道:使用符号“|”,連接配接兩個指令,左邊的指令執行結果是右邊指令的輸入,實作單個指令無法完成的操作
5、腳本(預設字尾是.sh)
概念:使用shell指令編寫的可執行程式,有以下特點:
A 類似于DOS中的批處理檔案,是shell指令語句的集合,用于實作特定功能
B 儲存在文本檔案中,可以使用文本處理程式進行閱讀和編輯
C 由Shell環境解釋執行,不需要事前進行編譯
D 執行shell程式時,shell腳本檔案需要有可執行屬性
組成:使用vi編輯器進行編輯
A 腳本運作的環境
#!/bin/bash
B 注釋行的使用
“#”開頭,後面可以寫入對于腳本的注釋,腳本執行時并不執行
C 腳本語句:腳本程式的重要組成部分,是真正需要在程式中解釋執行的内容
使用chmod指令給腳本檔案添加可執行屬性
腳本運作:
A 使用shell指令程式執行腳本
#bash 腳本檔案 不需要腳本有可執行屬性
B 使用“.”指令執行
#. Filename 不需要腳本檔案有可執行屬性
C 設定執行屬性執行腳本
#./腳本檔案 或者使用絕度路徑 需要腳本有可執行屬性