寫一個簡易的shell腳本(一)

若是常常操做linux 或者配置文件的話以及平時開發和處理文本文件等,會有不少的重複工做,這時若是有一個簡易的shell腳本,會大大提高工做的效率,所以我查閱了了一些資料,下載了shell腳本學習指南,大抵了解怎麼去寫一個簡易的腳本,寫一個腳本前,有些基本知識仍是須要了解的。在這裏與你們分享。html

①shell腳本一般一開始都是#! /bin/sh  注:/bin/sh 是 c shell的命令解釋器。詳細瞭解參閱學習指南。linux

② shell 中的特殊符號shell

  1. ~:主目錄,至關於$HOME
  2. `:命令替換
  3. #:shell腳本中的註釋
  4. $:變量表達式符號
  5. &:後臺做業,將此符號置於命令末端,則讓命令於後臺運行
  6. *:字符串的通配符
  7. (:啓動子shell
  8. ):中止子shell
  9. \: 轉義一下字符
  10. |:管道
  11. [:開始字符集通配符號
  12. ]:結束字符集通配符號
  13. {:開始命令塊
  14. }:結束命令塊
  15. ;:shell命令分隔符
  16. ‘:強引用
  17. 「:弱引用
  18. <:輸入重定向
  19. >:輸出重定向
  20. /:路徑名目錄分割符
  21. ?:單個任意字符
  22. !:管道行邏輯NOT

③ shell識別三種基本命令函數

內建命令,shell函數,以及外部命令;工具

內建命令:shell自己所執行的命令,例如 cd,read,test,echo,printf學習

shell函數:以shell語言寫成,能夠像命令那樣引用。 this

外部命令:由shell的副本(新的進程)所執行的命令。spa

④基本命令符:
1>變量:  name= 「my name 」  或name=name 注:有空格需加雙引號
2>輸出: echo &name 輸出變量.net

3>echo name 輸出內容htm

經常使用 echo -c 忽略最後一個字符。 -n 換行 -f清屏 等

4>printf: 模仿於c語言的printf()  \n 換行  %s 參數的輸出。

5>cat:未指定任何參數,讀取標準輸入,寫入標準輸出。

帶有最經常使用選項的tr命令格式爲:(linux 命令複習)
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
這裏:
-c 用字符串1中字符集的補集替換此字符集,要求字符集爲ASCII。
-d 刪除字符串1中全部輸入字符。
-s 刪除全部重複出現字符序列,只保留第一個;即將重複出現字符串壓縮爲一個字符串。
input-file是轉換文件名。雖然可使用其餘格式輸入,但這種格式最經常使用。

6>重定向與管道

例vi file.txt   "a bc"; 

以<改變標準輸出

 tr -d 'a' < file.txt  

以>改變標準輸入

cat file.txt | tr -d 'a' > new_file.txt  

以>> 附加文件

program >>file.txt 可將program的標準輸出附加到File的結尾處

若是目標文件不存在,>>重定向符會從新建一個。若是存在,不會覆蓋文件,附加到結尾處。

以 | 創建管道

p1 | p2 可將p1的標準輸出修改成p2的標準輸入。

例tr -d 'a' <file.txt | sort  >new_file.txt (sort排序 )

sort用法 詳見:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html

7> 特殊文件

/dev/null 位桶 傳送到此的文件會被丟掉

/dev/tty 

8>簡單的執行跟蹤

set -x 打開跟蹤功能   set+x 關閉跟蹤功能

⑤文本處理工具

1> uniq 

-c 在每一個輸出行以前加上該行重複的次數

-d 顯示重複的行

-u 顯示未重複的行

例:JordandeMac-mini:~ jordan$ sort uniq.txt 

chun

fan

ning

ning

sun

JordandeMac-mini:~ jordan$ sort uniq.txt | uniq -c

   1 chun

   1 fan

   2 ning

   1 sun

JordandeMac-mini:~ jordan$ sort uniq.txt | uniq -u

chun

fan

sun

2> fmt 格式化段落

fmt -s 切割較長的行

fmt -w n 設置輸出行寬爲n個字符(默認75)

例:fmt 能夠將字母分割,可是不能出現字符,出現符符號則會以下

JordandeMac-mini:~ jordan$ fmt -w 1 fmt.txt (有符號)

my

name

is

ninghcunsun,I

like

playing

games

in

my

spare

time.I

enjoy

this

life.

JordandeMac-mini:~ jordan$ fmt -w 1 fmt.txt 沒有符號

my

name

is

ninghcunsun

I

like

playing

games

in

my

spare

time

I

enjoy

this

life.

3>sed命令大全 (很是重要)

http://man.linuxde.net/sed

相關文章
相關標籤/搜索