編號是我自己編的,跟書內範例的次序不同。 001. 「echo ${PIPESTATUS[1]}」可得到 pipe 中第二個指令的執行回傳值, 以判斷是否執行成功。 002. 「nohup command &」可以使得 command 在背景執行時即使使用者登出或 終端被關閉依然繼續執行。 003. 「eval $variable」可將 $variable 的值當作指令執行。 004. 「ls | tee list.txt | sort -r > list_rev.txt」中,tee 將 stdio 得出的 ls stdout 寫到 list.txt 中,同時也寫到 tee 自己的 stdout。在此例中 list.txt 與 list_rev.txt 會是兩份資料次序相反 的檔案。 005. 「command > filename 2&1」,將 command stdout 跟 stderr 的訊 息都寫到 filename 中。更精確來說,是將 stderr 的 message redirect 到 stdout。 006. 在 script 中 self-defined 的 function 可以用 unset 來取消, 不過真的有人會要這麼做嗎.... 007. Argument $1, $2..等的個數,可用 $# 來顯示。 008. Shell 中沒有絕對的 Global Variable. 009. 可以用「shift」來將 arguments 的 index 移動到第 number 個 argument 處。 010. Arguments 為「a b c」時,若是「"$*"」的話是「"a b c"」, 而「"$@"」的話則是「"a" "b" "c"」。 011. 「${var_name:=default_value}」,var_name 未定義或是空值時會將 default_value 設定為它的值。 012. 「$(var_name:?message}」,var_name 未被定義時,會顯示 message 並且中止 script. 013. 「readonly var_name」,之後 var_name 這個變數無法被改變。 014. (1) 用「"..."」,字串整體會被當成個單字處理,會進行變數展開及指令替換 等展開動作。 (2) 用「'...'」,字串整體會被當成個單字處理,但不會進行展開動作。 (3) 直接寫入,(1) 的情況加上 tilde expansion 和路徑名稱的展開。 015. 「set -- $var」可以將 $var 這個字串分割成多個單字, 結果可用 $1 到 $9 來參照。 016. 「substr=`echo "$str" | cut -c${start}-${end}」可取出 字串 $str 中第 start 到 end 的結果存到 substr. 017. 「echo "$text" | tr 'a-z' 'A-Z'」,將 $text 中的小寫轉成大寫。 018. 「echo "${#text}」,顯示 $text 這一字串的長度。 019. 「random=$(((RANDOM % 10) + 1))」會產生 1~10 的亂數。 020. 「if tty -s; then」,判斷是否是在終端執行。 021. 「basename dir1/dir2/sample.txt .txt」會輸出 sample,看起來 像是只得到檔名而消除了副檔名。 022. 「bname=`expr "$1" : '\(.*\)\.'`」消除副檔名; 「ext=`expr "$1" : '.*\(\..*\)'`」取得副檔名。 023. 消除像是 -test 這類的檔案,可以用「rm -- '-test'」。 024. 「: >file_name」會得到個內容為空的 file_name 檔案。 若使用 touch 的話,當檔案本身已存在時,僅會更改更新日期,而內容不變。 025. 「mkdir -p dir1/dir2/dir3」,當 dir2 跟 dir3 不存在時不會出現 錯誤,而是會自行幫你產生 dir2 跟 dir3. 026. 在 cp 時加上 "-p",可以保留所有權、存取權、更新日期等資訊, 但 symbolic link 在複製過去時會變成普通的檔案。 027. 「dd if=/dev/zero of=bigimage bs=1024 count=1024」會製作一 個 1024x1024 (1M) 大小,名稱為 bigimage 的空檔案。 028. getopts:用來拆參數列。 029. 「echo -n "message"」,輸出 message 後不會換行。 030. 「stty raw」,終端會被設定在 raw 模式,此時就會在每次輸入一個字時 把資料傳給程式。若想恢復成原本的模式,則用「stty -raw」。 031. stty 的「echo」「-echo」是設定是否要把輸入的文字顯示在畫面上。 032. 「stty raw -echo char=`dd bs=1 count=1 2>/dev/null` stty -raw echo echo "Key pressed: '$char'"」 程式執行時,按一個鍵不用按 Enter,資料就會被送入程式進行處理。 033. 「stty sane」可以重置終端。 034. 「pgrep '^sshd$'」會顯示執行中的一個名稱叫作 sshd 的行程的 pid 一覽表。 035. 優先順位的數值越大,形程執行的優先順位越低。 036. 「trap '' INT」中,「''」是代表預執行的處理部份是空值,所以在程式執行過程 中下 ctrl+c 並不會被受理。 037. 「tar cf -path | gzip -c | ssh host "cat > filename.tar.gz」, 似乎挺有趣的,改天再來試試。
2012年2月6日 星期一
[Linux][Script][Shell Programming 333 個應用範例技巧大全集 Memo]
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言