/bin/bash sample.sh
中的命令來自使用者主目錄的指令碼檔案~/.bashrc ,對於登入shell則是 ~/.bash_profile .除此之外,我們執行的命令的歷史記錄在檔案 ~/.bash_history 中
printf使用格式化字串來輸出,引數以空格分割 如:
printf
"%-5s %-10s %-4.2f\n" 1 jack 88.966
賦值 則等號兩邊沒有空格,或需要空格,則用引號引之 如:
a=
" master"
echo
"$a"
判斷是否相等,則等號兩邊有空格,如:
#! /bin/bash
a=1b=1if[
[$a=$b
]];then
echo
"equal"
;else
echo
"unequal"
;fi
$path 通常包含在 /etc/environment /etc/profile 或 ~/.bashrc 裡,當我們使用如下命令時:
export path=
"$path:/home/user/bin"
會將/home/user/bin新增到***當前指令碼***自己的環境變數中.當然雙引號中的$path包含了原來的環境,而其後的冒號沒什麼特殊含義,就是環境變數的分隔符.
其他:
a=123456789
echo
"$"
輸出:9
echo
$shell
#輸出當前使用的shell型別
if
[$uid
= 0 ]
;then
echo
"it's root"
else
echo
"no"
fi
prepend(
)
-d是判斷 $2所指定的目錄是否存在,如果存在則繼續執行,所以從書面意思上我個理解這裡有乙個順序問題,若第乙個為真,後面不會執行.
如果存在, eval 表示式(eval參考).將第乙個引數所指定的變數設定成第二個引數的值加上:(路徑分隔符),隨後再跟上第乙個引數的原始值.但是在新增時,如果變數為空,會在末尾留下乙個:所以改進後為
#! /bin/bash
prepend(
)\" && "
export
$1"
}
語法:eval cmdline;
eval會對後面的 cmdline 進行兩遍掃瞄,如果第一遍掃瞄後 cmdline 是個普通命令,則執行此命令;如果 cmdline 中含有變數的間接引用,則保證間接引用的語義。
以上均提煉自《linux shell 指令碼攻略(第三版)》,後續不再綴述
shell學習日誌
修改linux時間 date 月日時分年 例 date 072717582006 trap命令 中斷命令訊號遮蔽,使程式的執行不會因為使用者的誤操作而終止 例 trap exit 1 1 2 3 15 find命令,xargs命令 合用 查詢特定條件內容 兩天前修改過 過通道送給xargs執行 刪除...
shell 學習日誌(四)
dd命令會轉殖給定的輸入內容,然後將一模一樣的乙份副本寫入到輸出。stdin 裝置檔案 普通檔案等都可以作為輸入,stout 裝置檔案 普通檔案等也可以作為輸出。dd if dev zero of junk.data bs 1m count 1if input file of output file...
SHELL 分析日誌
1 檢視當天有多少個ip訪問 awk log file sort uniq wc l 2 檢視某乙個頁面被訪問的次數 grep index.php log file wc l 3 檢視每乙個ip訪問了多少個頁面 awk end log file 4 將每個ip訪問的頁面數進行從小到大排序 awk e...