今天開始學習Shell腳本,以儘量短的時間內把《shell 腳本學習指南》給啃完。
下面的就是一些關於學習時的一些記錄了。
who 可以告訴你係統中有哪些人登錄。
who | wc -l 可以統計有多少人登錄了。 wc -l 是統計行數, | 是管道的意思,是把who 的輸出作爲wc 的輸入。
wc -l /home/cl/test.c 統計test.c文件中的內容行數。
下面就是把上面的管道變成一個獨立的命令
cat > nusers //建立文件,使用cat複製終端的輸入
who | wc -l 程序的內容
^D Ctrl+d 表示end-of-file
chmod 777 nusers 讓文件擁有執行的權限
./nusers 執行測試
cat nusers 顯示文件內容。
Shell變量名稱的開頭是一個字母或下劃線符號,後面可以接任意長度的字母、數字或下劃線符號,變量賦值的方式爲:先寫變量名稱,緊接着=字符,最後是新值,中間沒有任何空格。當你想取出Shell變量的值時,需在變量名稱前面加上$字符。當所賦予的值內含空格時,請加上引號:
所以如果要輸出now is test (now 與 is 中間有多個空格)
如果直接用echo now is test 則輸出now is test,空格取消了,只剩下一個了,所以要加引號。
echo -n "now is test" -n 表示省略結尾的換行符。
printf "hello world /n" 要顯示的輸出換行符
printf "%s %s " hello world
I/O重定向就是你通過與終端交互,或是在Shell腳本里設置,重新安排從哪裏輸入或輸出到哪裏。
以< 改變標準輸入
以>改變標準輸出
以>>附加到文件
以 | 建立管道
tr 命令:
一:去除重複出現的字符
tr -s "[a-z][A-Z]"
二:刪除空行
tr -s '/n'
三:大寫到小寫
tr "[a-z]" "[A-Z]"
四:刪除指定字符
tr -cs "[a-z][A-Z]" '/n' 把非a-z和A-Z的字符轉化爲'/n'
tr詳細用法見我的博客tr命令詳細用法
兩個特殊文件:
/dev/null與/dev/tty
/dev/null,傳送到此文件的數據都會被系統丟掉。
/dev/tty,當程序打開此文件時,unix會自動將它重定向一個終端。
stty(set tty)命令來控制終端的各種設置。
stty -echo 關閉自動打印輸入字符的功能
stty echo 打開自動打印輸入字符的功能
grep -r 'test' /home/cl 查找/home/cl目錄下所有文件中是否包含test字符串。