第一章略過,下邊從第二章開始,大家懂得。
ps:這里發生了一件非常當我蛋疼的事情,非常!已經碼文章碼到第四章了,悲劇的按錯瀏覽器按鈕刷新掉,怎么也找不回來之前寫的東西了。想死!算了,復習一邊吧。以下全文均屬自己總結書寫,有錯誤的地方也未必是書中錯誤(當然也有可能是書中錯誤,但是我都會親自操作滴),可能是我寫錯,請大牛指正。
第二章入門
因為第二遍寫,就簡單快速的寫吧,盡量寫清楚。大家都知道的終端命令cd啊 chmod啊 who啊之類的組合在一起加上一些控制語句,變量什么的就成shell編程了,給出一個簡單例子:
代碼如下:
$ cat > nusers
#! /bin/sh
who | wc -l
^D
$ chmod +x nusers
$ ./nusers
上邊就是nusers文件就是一個完整的shell腳本了,功能是查詢多少用戶登錄系統。cat >nusers 重定向到nusers文件輸入數據流, #! 這句 ,#號之后都是注釋,但是#!是會被解釋器讀取的,因為這句告訴了系統應該使用什么解釋器,這里就是 /bin/sh 。^D是按ctrl+d 結束輸入,chmod增加可執行權限,最后就是運行自己寫的腳本。這樣就是一個完整的編寫到運行使用的過程了。你入門了木有?(額~如果木有的話,那換個文章再看看吧)
現在我們來改進一下,為了讓我們執行自己的程序更像系統內建命令那樣,我們可以修改系統環境變量PATH,修改過windows的童鞋都知道,linux也一樣,是為了讓系統搜索命令的時候有個搜索路徑依據。你可以輸出一下看看先:echo $PATH .結果就是輸出一大串以:為分隔符的字符串,我們給他重新賦值,假設我們編寫的shell代碼存在用戶目錄下的myshell文件夾內,那么我們就這樣賦值: PATH=$PATH:$HOME/myshell 這樣我們就可以直接運行nusers命令獲得用戶登錄數目的信息了。
這里學習兩個命令,不好意思你想錯了,不是who 和 wc,而是從最基本的輸出hello,world開始嘛,所以先學echo和printf,前者十分簡單,會輸出所有參數,如:echo hello,world 。會c語言的朋友可以開心了,因為你不用再學習printf了,機會完全一樣,比如:printf "hello,%s/n",world ,這樣就會輸出hello,world然后換行(不會有不會c的童鞋吧?)。
另外再說一下之前出現的 > | < (不是表情 - -! (這個是)),這是基本的I/O重定向了,用過windows里cmd命令并且知道的也可以跳過了。 > 輸出重定向 。 <輸入重定向 。 | 管道,會把符號前的輸出信息當作符號后的輸入信息。另外還有>> << ,與單個的區別就是單個的會覆蓋原本存在的文件,沒有就創建。雙個的不會覆蓋,只在已有的文件后邊增添。
為了練習這個重定向,學習一個tr命令,主要用于轉換刪除濃縮字符。
新聞熱點
疑難解答