Unix Shell學習雜記

來源:互聯網
上載者:User

最近做了一些Unix Shell編程的回顧,其實Unix是個非常優秀的作業系統,也許從易用性和使用者體驗上它不如Window XP。但底層的許多思想和指令碼技術不斷演化,包括了很多優秀思想和演算法、設計策略,也是非常值得我們借鑒和學習的。雖然在工作中暫時不需要用Shell編程,不想讓以前的積累逐漸淡忘,所以還是覺得應該留下一點些心得體會。

摘錄了一些關於Shell的定義:文字與作業系統外部最主要的介面就叫做shell。


shell是作業系統最外面的一層。shell管理你與作業系統之間的互動:等待你輸入,向作業系統解釋你的輸入,並且處理各種各樣的作業系統的輸出結果。shell提供了你與作業系統之間通訊的方式。這種通訊可以以互動方式(從鍵盤輸入,並且可以立即得到響應),或者以shell script(非互動)方式執行。shell script是放在檔案中的一串shell和作業系統命令,它們可以被重複使用。本質上,shell script是命令列命令簡單的組合到一個檔案裡面。


在回顧Unix Shell編程時有兩個印象比較深的key point:1、Unix對cron檔案的配置,它對日期格式提供一個匹配運算式可以讓作業系統按照格式定義的Schedule來運行一些任務(Task),這讓我想起了Spring整合的quartz以及非常精確強大的CronTrigger運算式,可以為程式配置複雜的Schedule通知應用程式執行某個Job。2、tee命令將輸出資料流重新導向到標準輸出和另外一個檔案副本或者管道中,這種對流的重新導向思想我覺得借鑒罪明顯的地方就是Log4j,本質上就是對Log輸出資料流的一個重新導向,並提供了比較強大的匹配過濾規則,可以對流中資料進行format。其它學習筆記——

  • kill命令的作用本質是發送一個訊號(Signal)給一個Process,只是由於用途多數情況下是為了終止這個Process才取名kill。
  • 重新導向>和>>,前者是覆蓋方式,後者是追加填充方式
  • 變數置換和引用的區別,置換是將元字元進行解析的過程,引用是取消對某些元字元的置換處理。
  • 環境變數在對所有子進程起作用之前必須先export。
  • shell對引號的區分標準:單引號表示逐個取一串字元、雙引號表示允許其中變數替換、反引號表示允許執行命令並替換引號中命令為為輸出結果。
  • 在建立一個新進程之前,本進程會調用fork命令複製自身
  • 當一個進程被複製時,原來的進程就叫做父進程,由PDID屬性儲存區父進程的PID
  • 連結並不是檔案的一種獨特類型,檔案系統允許不只一個目錄項指向某個特定檔案

當初學習Shell的時候有三個概念非常迷惘,這就是grep、awk和sed,查閱了一些資料也只是大概清楚:

1、grep, global search regular expression and print out。它是在一個或者多個檔案中搜尋字串模版,如果模版包括空格則必須被引用。模版後所有字串被看作檔案名稱,搜尋結果送到螢幕不影響原文內容。可能是用得罪廣泛的一種匹配尋找方式了。

2、awk是一種優良的文本處理工具,很強大的資料發動機。名字來源於三位創始人Alfred Aho、Peter Weinberger、Brain Kernihan。它是一種樣式掃描和處理語言,允許簡單的建立簡短程式,讀取輸入檔案,可為資料排序、處理資料執行計算以及產生報表等。它比起只匹配的grep,增加了處理的能力,當然速度會下降,資源消耗會增加。

3、sed是非互動式上下文編輯器,編輯那些很大的檔案或者要求對輸入的資料在一趟掃描中進行多個全域函數。它編輯檔案或者標準輸入的一份拷貝,標準輸入可能來自於鍵盤、重新導向、變數或者另外的管道。

 

對於作業系統而言,在機器語言之上的層面上看,CPU執行的大多計算都是在處理記憶體中的一些文本(Text)的過濾、調用運行、管理,比起進階程式設計語言Java、C++而言,這些指令碼語言具有更強大的文本處理能力,文法簡潔。不知道以後有沒有機會深入學習Unix Shell或者在工作中使用,anyway,Shell確實是很優秀的一種技術,一點都不過時!


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.