若是常常操做linux 或者配置文件的話以及平時開發和處理文本文件等,會有不少的重複工做,這時若是有一個簡易的shell腳本,會大大提高工做的效率,所以我查閱了了一些資料,下載了shell腳本學習指南,大抵了解怎麼去寫一個簡易的腳本,寫一個腳本前,有些基本知識仍是須要了解的。在這裏與你們分享。html
①shell腳本一般一開始都是#! /bin/sh 注:/bin/sh 是 c shell的命令解釋器。詳細瞭解參閱學習指南。linux
② shell 中的特殊符號shell
③ 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