那些年我们一起追过的Shell Script
? ?原本這是自己在幾個月前為公司的一個分享活動寫的一個投影片,今天趁大腦負荷比較小,把這個話題拿到blog上面來分享一下。從知道shell算起至今也就幾個年頭而已,如今勉強算是入門了。對某一個新事物的掌握總是一個循序漸近的過程,只是根據(jù)不一樣事物的特點,其學習的曲線也不盡一致。shell script算是一門古老的腳本語言,最初始于UNIX/LINUX的系統(tǒng)管理中,用戶透過shell可以將自己的命令傳遞給系統(tǒng)的內(nèi)核,當系統(tǒng)完成你的命令后返回執(zhí)行的結(jié)果給用戶,所以shell最初意義上被定義為用戶的操作系統(tǒng)的一個交互界面。當用戶總是執(zhí)行一連串重復的命令的時候,便思考能不能將這些重復的命令按照一定的格式組織在一個文本里面,然后每一次通過去解釋執(zhí)行這樣的文本來實現(xiàn)一連串的命令,于是shell script便應運而生。這便是計算機早期的批次處理的工作方式,如同Windows下面的batch(當然名字叫batch的程序并非一行行的去執(zhí)行,其實他和shell script一樣具有腳本語言的語法,只是要簡單和生硬得多而已)。
? ? 上面說到shell script的學習曲線,我個人覺得前期的一些背景知識的學習是必不可少的,所以在學習的初期可能給你帶來一定的困難,當你一旦掌握了其原理和擁有了一點實際的經(jīng)驗,那么你就會覺得簡單多了,但是你要想成為像那些Linux腳本天才一樣,能夠?qū)⑺\用到極限,那不言而喻。對于一個嵌入式、Linux/Unix程序員或者計算機系統(tǒng)管理員,shell script總是一門必須課程,所以我們應該趁早學習,免得許多年后你發(fā)現(xiàn)shell script的強大時候才感覺“相見恨晚”。我們應該如何學起呢? 不像其他的高級語言,如C Languge,他們總是具有很好的跨平臺性,無論是你使用Windows,還是使用Linux,或者是Mac OS,你都可以很容易的獲取開發(fā)環(huán)境進行開發(fā)。shell script和Unix/Linux與生俱來,所以你要學習前總不可能避免的回去學習Linux。或許你是一個被MS windows毒害至深的TX,根本沒聽過Linux,抑或僅僅聽過Linux,又或者是用過但是覺得超級難用… 諸如此類,都要克服人的惰性去學習,人總是習慣自己習慣的事物,改變自己習慣的習慣總是很難,而且還對違背自己習慣的事物非常的抵制。這里并不是比較Windows vs Linux,這是一個沒有結(jié)論的爭論。所以勸導大家在習慣自己習慣之前先養(yǎng)成一個好的習慣。
? ? 前面有關(guān)無關(guān)的話講了許多,接下來簡單介紹一下shell script,shell script你可以認為他就是一門高級的腳本語言,shell就是他的解釋執(zhí)行器,然后許許多多的系統(tǒng)自帶的命令你可以想象成為是標準函數(shù)庫。對于解釋器,在大多數(shù)的posix系統(tǒng)里面都將Bash作為默認的shell,所以這里的shell script的語法也默指Bash的語法規(guī)則。Bash,你在大多數(shù)的Linux或者Unix 發(fā)行版中都應該可以找到,而且你一樣可以從Windows下面的Unix Like環(huán)境Cygwin下面打開。然后shell script的語法部分內(nèi)容都在我的投影片里面有講述,后面會給出投影片的位置。下面分享一個簡單的shell script實例:
? ? 大部分的程序員估計都會使用SVN作為版本控制工具(或許一些老頑固還在使用VSS,或許我自己out,大部分都在使用Git了),那在TortoiseSVN 1.7之前你總有為工程目錄下面到處都是.svn的目錄而苦惱過,或許你早已經(jīng)google了一些小的tool可以解決這個問題,但是我這里想介紹的是通過shell script也很容易實現(xiàn)諸如此類的需求: ?
#!/bin/bash CleanSVN () {FILES=`ls -a`;for FILE in $FILESdoif [ -d $FILE ]; thenif [ "$FILE" = ".svn" ]; thendir=`pwd`;echo "$dir/$FILE";rm -rf $FILE;elif [ "$FILE" != "." ] && [ "$FILE" != ".." ]; thencd $FILE;CleanSVN;cd ..;fifidone } CleanSVN;? ? 下載:shell script introduce.pdf @ GitHub
轉(zhuǎn)載于:https://www.cnblogs.com/kinreven/archive/2012/10/30/2747125.html
總結(jié)
以上是生活随笔為你收集整理的那些年我们一起追过的Shell Script的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用CSS设置Table的细边框的最好用的
- 下一篇: daily scrum 11.1