shell學習日誌 一

2021-10-09 17:13:36 字數 1537 閱讀 6987

/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...