2007年6月25日

鳥哥筆記-Lesson 8

Shell二部曲,先來看兩個有用的指令alias跟history,單純的執行alias將會列出你目前有重新修改過的指令,比方說,一般在ubuntu下面會看到alias ls='ls --color=auto',表示顯示檔案列表的時候順便顯示顏色,alias的好處就是可以把常用的參數變成預設,免得每次都要加上參數,真的是很要命的麻煩。history則會列出你執行過的指令,他前面會帶有一個數字,使用!number,!+數字,表示你要重新執行history中的哪一個指令

接下來看兩個有趣的檔案,分別是/etc/issue跟/etc/motd,前者紀錄目前你使用的OS資訊,比方說Ubuntu 7.04,後者則是使用者遠端登入的時候的顯示訊息;這兩個檔案有人非常詬病,因為/etc/motd跟/etc/issue常常有系統的種類資訊,他們認為這只是讓hack更加容易了解系統的資訊,所以一般建議是把/etc/motd修改(這部份對於多人使用環境,如學校開個機器讓學生熟悉linux環境,非常有用),不要洩漏自己系統的資訊

有很多個人的設定檔案,也就是當你進入shell的時候一定會執行的某些shell script,這些檔案實在太多太雜了,我一般都是使用.bashrc來建立我個人的路徑,例如JAVA_HOME等等

常態表示法(regular expression),這東西可是可以開一門課程的內容,我就不仔細介紹了,直接擷取鳥哥的一小段內容近來,實際上多用、多看、多想~就可以達到相當的程度;如果真的有興趣Oreilly有出版一本mastering regular expression的書本,況且這東西還因應不同的程式語言有不同的風貌哩(有些小差異,比如perl跟postfix的版本很像,但是有點小小的不一樣),以下是節錄的內容

內容
*萬用字元,代表 0 個或多個字元(或數字)
?萬用字元,代表『一定有』一個字母
#註解,這個最常被使用在 script 當中,視為說明!
\跳脫符號,將『特殊字元或萬用字元』還原成一般字元
|分隔兩個管線命令的界定;
;連續性命令的界定(注意!與管線命令並不相同)
~使用者的家目錄
$亦即是變數之前需要加的變數取代值
&將指令變成背景下工作
!邏輯運算意義上的『非』 not 的意思!
/路徑分隔的符號
>, >>輸出導向,分別是『取代』與『累加』
'單引號,不具有變數置換的功能
"具有變數置換的功能!
` `兩個『 ` 』中間為可以先執行的指令!
( )在中間為子 shell 的起始與結束
[ ]在中間為字元的組合
{ }在中間為命令區塊的組合!

如果我們要觀察一個目錄下所有文字檔,假設文字檔統統是以副檔名.txt出現的,我們就可以下達指令ls *.txt

接下來就是看到兩個shell重要的觀念redirect(重導)跟pipeline(管線),很多人使用的很習慣,也重來不細想其中的差別(本人就是一個XD);redirect就是把資料放到別的地方去,而pipeline則是將前者的輸出變成後者的輸入

沒有留言: