編程語言系列(六)--shell語言基礎知識點總結



從程序員的角度來看, Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統溝通的橋樑。用戶既可以輸入命令執行,又可以利用 Shell腳本編程,完成更加複雜的操作
Linux的Shell種類衆多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種就足夠了                          
由於易用和免費,Bash(Bourne Again Shell)在日常工作中被廣泛使用;同時,Bash也是大多數Linux系統默認的Shell              
在一般情況下,人們並不區分 Bourne Shell和Bourne Again Shell,所以在一般的shell腳本文件開頭,

#!/bin/sh 也可以改爲#!/bin/bash    ????兩者的差別和共同點 ??           
 
shell命令顯示的文件類型:如: ps ,ls等顯示的情況:
七種文件類型 :d 目錄 , l 符號鏈接,s 套接字文件 ,b 塊設備文件,c 字符設備文件,p 命名管道文件,- 普通文件

shell腳本中函數沒有必要聲明,但函數體的定義必須放在函數被執行語句的前面。


sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),
接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出
sed [options] 'command' file(s) 或者 sed [options] -f scriptfile file(s)

s/re/string  :s命令的使用模式,表示用string替換正則表達式re。
例如 :sed 's/My/You/g' datafile
#命令末端的g表示在行內進行全局替換,也就是說如果某行出現多個My,所有的My都被替換爲You。

-i 參數 :直接在原文件上進行操作。如果不加-i參數,源文件不改變
  如:sed -i “s/My/You/” file.c  ,意思是將file.c文件裏第一個匹配My替換爲you。
my.* 表示my後面跟任意的字符(除換行符外)
^.*my 表示my前面跟任意字符(除換行符外)
  如:sed -i 's/bin\/gldcDaemon.*/bin\/gldcDaemon 2160 2160 1 0/g' init.rtd299xboard.rc
          bin/gldcDaemon 2160 2160 1 0 替換原來的bin/gldcDaemon開頭的字符串
      sed -i 's/^.*EURASIA_3D_1080P.*/#EURASIA_3D_1080P=y/g' config.develop.android.jb.rtd299x.tv030.emmc.old


if [ -d /data/local/tmp ]; then        其中-d代表後面跟的是文件/data/local/tmp
   chown 2000:2000 /data/local/tmp
fi

if [ -e /data/realtek/noandroidrun ]; then  ,-e 文件存在  具體的if參數可以參考《shell經典教程》


command 1>./filename.txt 2>&1    執行command命令產生的所以log信息都會輸出到文件filename.txt裏面。 1代表標準輸出stdout,2代表輸出的警告或者錯誤信息stderr
2>&1表示輸出的2信息會疊加到信息1中,不會覆蓋(其中1系統默認)。如下:
make 1>./info.txt 2>&1  或者 make >./info.txt 2>&1

make >/dev/null 2>&1 這條命令的意思是將標準輸出和錯誤輸出全部重定向到/dev/null中,也就是將產生的所有信息丟棄
1. > :代表重定向到哪裏,例如:echo “test ” > /home/test.txt
2. /dev/null :代表空設備文件
3. 2> :表示stderr標準錯誤
4. & :表示等同於的意思,2>&1,表示2的輸出重定向等同於1
5. 1 :表示stdout標準輸出,系統默認值是1,所以”>/dev/null”等同於 “1>/dev/null”


shell腳本中的命令,一行一行的形式,相當於手動輸入一行一行命令
每一行命令直接的變量值不能共享。要一行執行多條命令,可用 分號;分開,或者用&&,||等符號

形式:命令1 && 命令2
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,右邊的命令(命令2)才能夠被執行


參考教程:shell經典教程  

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