編號是我自己編的,跟書內範例的次序不同。
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)
沒有留言:
張貼留言