3 linux命令行與shell腳本編程大全_part2

6 開(kāi)始shell編程

反引號(hào):``將命令輸出結(jié)果賦值給變量睹酌;
重定向:>寫(xiě)入文件,>>追加到文件憋沿,wc<test文件內(nèi)容輸入到命令;
管道:相當(dāng)有用采章!同時(shí)運(yùn)行,將命令的輸出向后依次傳遞担租;
數(shù)學(xué)運(yùn)算:記住bash僅能處理整數(shù)!

$[operation]
expr operation
bc # 設(shè)置scale以計(jì)算浮點(diǎn)數(shù)

var=`bc << EOF
scale=4
a1=10.46*43.67
b1=33.2*71
a1+b1
EOF
`

EOF用來(lái)標(biāo)識(shí)內(nèi)聯(lián)重定向數(shù)據(jù)的開(kāi)始和結(jié)尾奋救;
退出腳本:exit [0~255]

7 邏輯流控制

雙圓括號(hào):((expression))高級(jí)數(shù)學(xué)表達(dá)式(C語(yǔ)言風(fēng)格)
雙方括號(hào):[[expression]]匹配字符串
內(nèi)部字段分隔符IFS:空格反惕、制表符、換行符(包含空格的字符串利耍,使用雙引號(hào))
while:允許多個(gè)測(cè)試命令盔粹,由最后的那個(gè)決定結(jié)束循環(huán)(所有命令都被執(zhí)行,且每個(gè)命令都是單獨(dú)一行)
break/continue n:跳出循環(huán)/停止循環(huán)內(nèi)的命令舷嗡,但繼續(xù)外部循環(huán)(默認(rèn)n=1)

# 普通shell命令:執(zhí)行cmd,若exit 0捻脖,則執(zhí)行cmds_1
if cmd
then
    cmds_1
elif cmd
then
    cmds_2
else
    cmds_3
fi

# test命令:數(shù)值(-gt)中鼠。字符串(>或<,記得加雙引號(hào))援雇、文件比較(包括目錄、文件)
if [ $var1 -gt $var2 ]
if [ "$str1" \> "$str2" ] [ -n "$str1" ] [ -z "$str1" ]
if [ -d/-e "$HOME" ] [ -f/-s "$file" ]

# case命令
case variable in
pattern1 | pattern2)
    cmds_1;;
pattern3)
    cmds_2;;
*)
    default_cmds;;
esac

# var保持最后一次迭代的值具温;按行遍歷文件筐赔;結(jié)果重定向;結(jié)果管接給另一個(gè)命令
IFS=$'\n' IFS=: IFS=$'\n:;'"
for var in `cat "$file"`
do
    echo $var
done > output.txt | sort

8 處理用戶輸入

# 讀取程序名
`basename $0`
# 參數(shù)變量
$#; ${!#}; $*/$@
# 移除參數(shù):用于遍歷參數(shù)
while [ -n $1 ]; do ... shift n; done
# getopt命令:-a -b 'test1' -c -d --'test2''test3'
argv[]="-a -b test1 -cde test2 test3"
getopt -q ab:cd $@

9 shell基礎(chǔ)

  • 一切皆文件:所有資源統(tǒng)統(tǒng)抽象為文件形式
  • 單一目的小程序:組合小程序完成復(fù)雜任務(wù)
  • 盡量避免跟用戶交互:易于編程實(shí)現(xiàn)自動(dòng)化任務(wù)
  • 使用文本文件保存配置信息

shell優(yōu)勢(shì)在于處理偏操作系統(tǒng)底層的業(yè)務(wù)达皿,符合linux簡(jiǎn)單、易用鳞绕、高效的三大原則;
python優(yōu)勢(shì)在于復(fù)雜運(yùn)維軟件、web頁(yè)面管理工具控轿、web業(yè)務(wù)的開(kāi)發(fā)。

變量鹦蠕、注釋
$+變量名在抛,推薦引用時(shí)加上{}
需要原樣輸出,加上單引號(hào)
其他沒(méi)有特別要求的字符串等最好都加上雙引號(hào)
大段注釋或臨時(shí)代碼加上{}刚梭,定義成函數(shù)朴读,不調(diào)用就不會(huì)執(zhí)行。

myUrl="http://see.xidian.edu.cn/cpp/shell/"
readonly myUrl # 只讀變量衅金,更改會(huì)報(bào)錯(cuò)
myUrl="http://see.xidian.edu.cn/cpp/danpianji/"
unset myUrl # 刪除變量,但不能刪除只讀變量
unset .f function # 刪除函數(shù)

文件包含
source又稱為點(diǎn)操作符鉴吹,推薦使用.
被包含腳本不需要有執(zhí)行權(quán)限惩琉。

# source ./function.sh或
. ./function.sh
# 獲取絕對(duì)路徑的方法
real_path=`readlink -f $filename`
. $real_path

10 shell高級(jí)

函數(shù)(庫(kù))

function func1 {
    cmds
}
func2() {
    cmds
}
# 局部變量
local temp

函數(shù)被重定義時(shí),新定義覆蓋原定義琳水,不會(huì)產(chǎn)生任何錯(cuò)誤消息。
$?函數(shù)的退出狀態(tài)碼诚啃,僅代表最后一條命令是否成功運(yùn)行私沮;return整數(shù)值,賦給$?為退出碼;echo輸出魔招,賦給變量五辽;循環(huán)+echo輸出,賦給數(shù)組變量杆逗。
啟動(dòng)新shell自動(dòng)加載函數(shù):.bashrc文件
圖形化菜單

function menu {
    clear
    echo -e "\t\t\tSys Admin Menu\n"
    echo -e "\t1. Disply disk space"
    echo -e "\t2. Display logged on users"
    echo -e "\t3. Display memory usage"
    echo -e "\t0. Exit program\n\n"
    echo -en "\t\tEnter option: "
    read -n 1 option
}
menu
case $option in
0)
    break ;;
1)
    diskspace ;;
2)
    whoson ;;
3)
    memusage ;;
*)
    clear
    echo "Sorry, wrong selection.";;
esac

11 正則表達(dá)式、sed進(jìn)階

[] 字符組:包含任何字符
[^] 排除字符組:之外的任何字符
[[::]] 特殊字符組:alnum=alpha+digit;blank/print/punct/space
*/+/? 0或多次/1或多次/0或1次
{m,n} 指定出現(xiàn)次數(shù):在m到n的區(qū)間
|/() OR多個(gè)模式/聚合表達(dá)式

d 刪除pattern space蠕蚜,進(jìn)入下一個(gè)循環(huán)
h/H pattern space 復(fù)制/附加 hold space
g/G hold space 復(fù)制/附加 pattern space
x pattern space 交換 hold space
b/t 跳轉(zhuǎn)(很難掌握)
& \1 \2 模式替代
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末靶累,一起剝皮案震驚了整個(gè)濱河市癣疟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌争舞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店溢,死亡現(xiàn)場(chǎng)離奇詭異委乌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)遭贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)壕吹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人耳贬,你說(shuō)我怎么就攤上這事∏牦。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵逐纬,是天一觀的道長(zhǎng)削樊。 經(jīng)常有香客問(wèn)我豁生,道長(zhǎng)漫贞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮仪际,結(jié)果婚禮上昵骤,老公的妹妹穿的比我還像新娘。我一直安慰自己变秦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布赎婚。 她就那樣靜靜地躺著樱溉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪福贞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天完丽,我揣著相機(jī)與錄音拇舀,去河邊找鬼。 笑死你稚,一個(gè)胖子當(dāng)著我的面吹牛朱躺,可吹牛的內(nèi)容都是我干的搁痛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼源请,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彻况!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纽甘,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悍赢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后左权,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屡贺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年锌杀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谤职。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亿鲜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒿柳,到底是詐尸還是另有隱情,我是刑警寧澤妓蛮,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布圾叼,位于F島的核電站捺癞,受9級(jí)特大地震影響构挤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筋现,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望一膨。 院中可真熱鬧洒沦,春花似錦、人聲如沸申眼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)买乃。三九已至,卻和暖如春剪验,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背娶眷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工啸臀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乘粒。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轧铁,于是被迫代替她去往敵國(guó)和親旦棉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子药薯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,149評(píng)論 2 34
  • 小時(shí)候童本,喜歡一家人賴床不起來(lái)的早上的 寧?kù)o系谐。如今更喜歡的是家人在賴床巾陕,我早 早起來(lái)的寧?kù)o纪他。 文字與米粥是美...
    高笑生閱讀 121評(píng)論 0 3
  • 【青蓮堂日話】160102 文/effelee 每日一話茶袒,是為日話 只有把每日零落的思緒寫(xiě)下來(lái)時(shí)才發(fā)現(xiàn)這短短24個(gè)...
    effelee閱讀 116評(píng)論 0 0
  • 今日終把這本小說(shuō)讀完了,這兩日讀了二百余頁(yè)薪寓,一下子就讀完了。我喜歡這部小說(shuō)向叉,他帶我入了另外的一個(gè)世界,那是...
    方五閱讀 225評(píng)論 0 0
  • 好苦惱,自從來(lái)到寫(xiě)作訓(xùn)練營(yíng)懈贺,自己覺(jué)得腦子里是空的。每天都在想著今天寫(xiě)點(diǎn)什么钠至,別人都已經(jīng)開(kāi)始打卡了,自己還不知道該寫(xiě)...
    青青子衿1989閱讀 324評(píng)論 4 1