天天看點

linux複習(第四章)

shell程式設計

shell特殊字元-引号

◦1.雙引号 由雙引号括起來的字元(除$、倒引号(`)和反斜線(\)外) 均作為普通字元對待。

◦2.單引号 由單引号括起來的字元全都作為普通字元出現

◦3.倒引号 倒引号括起來的字元串被shell解釋為指令行,在執行時,shell 會先執行該指令行,并以它的标準輸出結果取代整個倒引号部 分。 倒引号還可以嵌套使用。但應注意,嵌套使用時内層的倒引号 必須用反斜線(\)将其轉義。

‘’别名

alias 起别名

unalias 取消别名

shell特殊字元-通配符

◦1.一般通配符

:1*(星号),它比對任意字元的0次或多次出現,f*可以比對 f,fa,f1,fa2,ffa.s

2?(問号),它比對任意一個字元,f?可以比對f1,fa,fb,不能比對 fabc,f12

3[ ](一對方括号),其中有一個字元組。其作用是比對該字元 組所限定的任何一個字元. f[abcd]可以比對fa,fb,fc,fd,不能比對 f1,fa1,fab等,也可寫作f[a-d].

4 !(驚歎号),如果它緊跟在一對方括号的左方括号([)之後, 則表示不在一對方括号中所列出的字元f[!1-9].c表示以f開頭, 後面一個字元不是數字1-9的.c檔案名。

shell特殊字元-注釋、管道線 和背景指令

◦1.注釋 #!/bin/bash

2.管道線 ls-l $HOME | wc–l

3.背景指令 $ gcc m1.c&

shell特殊字元-輸入/輸出重 定向符

◦ 自動打開三個标準檔案,即标準輸入檔案(stdin),标準輸出檔案(stdout)和标準錯誤輸出檔案(stderr)。

◦1.輸入重定向符 一般形式是:指令 < 檔案名 如:$ score < file1

◦2.輸出重定向符 一般形式是:指令 > 檔案名 如:$ who > abc

◦3.輸出附加定向符 一般形式是:指令>>檔案名 如:$ ps-l >> psfile

輸入/輸出指令 ◦

1.read指令

2. echo指令

環境變量 ◦1.常用的環境變量

HOME:使用者主目錄的全路徑名

LOGNAME:即你的注冊名,由Linux自動設定

MAIL: 你的系統信箱的路徑

PATH: shell從中查找指令的目錄清單。可以設定它, 如:PATH=HOME/bin PS1:shell的主提示符。 bash預設的主提示符一般為“\s-\v$ ”。其中,\s表示shell的名稱; \v表示bash的版本号 PS1="Enter Command> "

PWD:你目前工作目錄的路徑

SHELL:你目前使用的shell

TERM: 你的終端類型

.删除環境變量 $ unset NAME

.export語句
利用export指令将這些變量輸出,使它們成為公用量

set指令
⑴ 顯示迄今為止所定義的全部變量,包括局部量和公用量;      

⑵ 用來設定位置參數的值;

⑶ 改變執行shell腳本時的選項設定,可以使使用者改變shell的功能。

◦bash中算術運算的使用

控制結構-if語句

if 測試條件

then 指令1

elif 指令2

then 指令3

else 指令4

fi

有關檔案方面的測試

-e filename 如果 filename存在,則為真

-L filename 如果 filename為符号連結,則為真

-r 檔案名 若檔案存在并且是使用者可讀的,則測試條件為真

-w 檔案名 若檔案存在并且是使用者可寫的,則測試條件為真

-x 檔案名 若檔案存在并且是使用者可執行的,則測試條件為真

-f 檔案名 若檔案存在并且是普通檔案,則測試條件為真

-d 檔案名 若檔案存在并且是目錄檔案,則測試條件為真

有關數值方面的測試

n1 -eq n2 如果整數n1等于n2,則測試條件為真

n1 -ne n2 如果整數n1不等于n2,則測試條件為真

n1 -lt n2 如果n1小于n2,則測試條件為真

n1 -le n2 如果n1小于或等于n2,則測試條件為真

n1 -gt n2 如果n1大于n2,則測試條件為真

n1 -ge n2 如果n1大于或等于n2,則測試條件為真

邏輯運算符

! 邏輯非( NOT

-a 邏輯與( AND )

-o 邏輯或( OR )

控制結構-case語句

在使用case語句時應注意: ⑴ 每個模式字元串後面可有一條或多條指令,其最後一條指令必須以兩 個分号(即;;)結束。

case $1 in
 -b) count=​​​grep^b $2|wc -l​​​ echo “The number of lines in $2 that start with b is $count.”;;
 -s) count=​​grep^s $2|wc -l​​ echo “The number of lines in $2 that start with s is $count.”;;
 *) echo “That option is not recognized”;;
 esac      

控制結構-while語句

while [ $1 ]
 do
   if [ -f  $1 ] 
  then echo “display: $1” 
  cat $1 
   else echo “$1 is not a file name.” 
 fi 
 shift 
done      

控制結構-until語句

它與while語句很相似,隻是測試條件不同:當測試條件為假時,才進入循 環體,直至測試條件為真時終止循環。

until [ “$2”= “ ” ] 
do
  cp $1  $2
   shift  2 
 done 
 if [ “$1”!=“ ” ] 
 then echo “bad argument!” 
 fi      

控制結構-for語句

其使用方式主要有兩種: 一種是值表方式 另一種是算術表達式方式

1.值表方式

for 變量 [ in 值表 ];do 指令表;done

例:

for day in Monday Wednesday Friday Sunday
 do
 echo $day
 done      

2.算術表達式方式

for ((e1;e2;e3))
 do      

指令表

done
break continue exit      

作業控制

jobs,kill,bg,fg和wait      
$ jobs
 [2] +Done who|wc-cd
 [1] -Stopped(SIGTTOU) man ls&