天天看點

17.linux中Shell的使用

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 設定執行屬性執行腳本

  #./腳本檔案    或者使用絕度路徑    需要腳本有可執行屬性

繼續閱讀