linux期末複習知識點小結(三)—— Shell

初識shell

shell是操作系統提供的命令接口,其實就是一個命令解釋器。



Unix的多種shell

Bourne shell

    Bournshell(sh)是標準的UNIX shell ,用來管理系統。大多數系統管理腳本,如rc啓動和停止腳本,關機腳本,都是Bourneshell腳本,這是管理員常用的Shell功能。Bourne shell是AT&T公司的產品,聞名於它的簡潔,緊湊,快速。Bourne Shell默認的提示符是美元符號($)

v   C shell

    C Shell(csh)伯克利分校開發的,它增加了一些功能,如命令行歷史,別名,內建算術和作業控制。C Shell延續了Bourne Shell的用戶交互方式,但管理員更喜歡Bourne Shell腳本方式,因爲Bourneshell的腳本簡單,速度快於相同腳本在C Shell中的運行速度。默認的C shell提示符是百分號(%)

v   Korn shell

Korn Shell是AT&T公司的David Korn編寫的,是Bourne Shell的一個擴展版。默認的Korn shell提示符是美元符號($)

Bourne againshell (bash)

   bash是Unix Bourn shell的GNU版本 ,是Linux系統默認的shell 。bash默認的提示符是美元符號($)。

v   TC shell

   TC Shell(tcsh)它是UNIX C Shell的一個分支,但添加了許多功能。

v   Z shell

   Z Shell是另外一個Linux Shell,它結合了bash,TC Shell和Korn Shell的一些功能。

 

通配符

bash下使用的通配符:

?代表任何單一字符 

* 代表任何字符串,可以是空串

[字符組合] 在中括號中的字符皆符合,例[a-z],[ace]

[!字符組合] 不在中括號中的字符皆符合,例[!0-9]

 

shell的基本功能

v 命令的解釋執行

v 環境變量的設置

v 輸入/輸出重定向

v shell程序設計

 

UNIX下 流的概念

Linux自動爲每條執行的命令(進程)打開三個文件,分別用於讀取輸入數據、發送輸出數據和錯誤信息,這三個文件分別叫標準輸入(stdin)、標準輸出(stdout)和標準錯誤文件(stderr)

信息流的標準定義:

v  標準輸入流(stdin):     文件描述符0, 默認爲鍵盤.

v  標準輸出流(stdout):   文件描述符1, 默認爲顯示器.

v  標準錯誤流(stderr):   文件描述符2, 默認爲顯示器

輸入/輸出重定向

輸入輸出重定向就是對系統信息流標準定義的修改

※  輸入重定向  <

 例:  prog < infile

※  輸出重定向  > ,>>

  例: pwd > outfile   ; ls –l >> file1   ;$ prog < infile > outfile

※  錯誤流重定向  >&

例:  gcc hello.c >&  log

 

管道線(pipeline)的概念

在命令中利用管道線(|)將命令隔開,實現將一個程序或命令的輸出作爲另一個程序或命令的輸入

下列字符可作命令表的分隔符

&&:若前一命令執行成功,則執行後一命令,例: mail zhang < letter && rm letter

 ||:若前一命令執行失敗,則執行後一命令,例: write zhang < letter || mail zhang <letter

 

環境變量的設置

環境變量是系統預定義的一些變量,如PATH,LOGNAME等變量,例如:



查閱命令:env

相關文件:  /etc/profile; ~/.bash_profile ; ~/.bash_login ; ~/.profile

打通路徑:

PATH=$PATH:$HOME   //$HOME代表需要添加到路徑變量中的目錄名




Shell Programming

shell程序:  一種解釋執行的腳本(script)語言,類似於DOS 下的.bat文件,但功能更強.

shell是按行解釋執行的,註釋在行首加#,習慣文件的第一行以”#!/bin/sh”開頭,指明使用哪種解釋器.

執行方式(三種):

1、$ sh < file.sh

2、$ sh  file.sh

3、首先修改shell程序的權限爲用戶可執行,如: $ chmod +x file.sh

然後在命令行下直接輸入:$./file.sh   (未打通路徑,若打通路徑,./ 不需要)

 

shell變量的使用

變量的賦值,變量的引用(在變量名前加$)如



不同的引號對shell變量產生不同的效果

1、單引號’ ’:shell將單引號中的內容看成純粹的字符串

2、雙引號” ”:shell對雙引號中的特殊字符進行解釋

3、反引號`  `:對反引號中的內容作爲shell命令執行




變量的作用域

shell變量也有局部定義和全局定義之分。不做特殊說明的變量均是局部變量,只在爲它賦值的shell進程中起作用。要是變量在多個進程中都能起作用,通過export命令使其變爲全局變量.

 

命令的位置變量

   在shell中命令的位置變量類似於C語言中argc和argv參數的功能,它們主要對命令行中各個參數的位置進行描述。記住$# ; $*  ;$?  ;$$  ;$!的定義

  $# 位置參數的個數

  $* 用單字符串顯示傳遞參數

  $?  爲前一命令返回的狀態值(0爲正常)

  $$ 當前shell進程的pid值

  $!  最近訪問的後臺進程的pid值


   


test命令的使用

格式: test expre 或 [expre]

當表達式的值爲真時,test命令返回真值0,否則返回假值非0.

1、對文件特性的測試:test –[dfrwxs]  file



1、對字符串內容的測試

test s ——當字符串S爲非空時,測試結果爲真值

test -zs ——當字符串S爲空時,測試結果爲真值

test s1 = s2  ——當字符串S1與s2相同時,測試結果爲真值

test s1! = s2 ——當字符串S1與s2不相同時,測試結果爲真值

2、對整數N的測試

test  n1  –eq  n2——當整數n1與n2相等時,返回真值;

test  n1  –ne  n2——當整數n1與n2不相等時,返回真值;

test  n1  –lt  n2——當整數n1小於n2時,返回真值;

test  n1  –le  n2——當整數n1小於等於n2時,返回真值;

test  n1  –gt  n2——當整數n1大於n2時,返回真值;

test  n1  –ge  n2——當整數n1大於等於n2時,返回真值;


  


條件控制語句

v  if語句

    (1) 無分支條件語句:if  then  fi

    (2)二分支條件語句:if  then  else  fi

    (3)多分支條件語句:if  then elif  then fi

 

v  case語句:  case in 結構

caseword  in

        pattern-1)    pat1-list1;;

        pattern-2)    pat2-list2;;

           ……

                  *)    default-list;;

esac





循環語句

v  for循環:  for in  done結構

v  while循環: while  do  done結構

v  until循環: until  do  done

 

將不必要的信息送入系統垃圾文件/dev/null (黑洞)中



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章