1. 指定格式輸出當前時間:
echo `date +%Y%m%d` # 注意使用反引號, +號后面不要有空格
反引號中的東西會被當做命令來執行, 並輸出執行的結果
2. $uid用於判斷當前是否是root用戶登陸的, 是為0, 否則非零.
3. * 匹配任意多個字符, 注意不要帶引號; ? 匹配任意一個字符
[a-Z] 匹配任意小寫或大寫字母; [0-9] 任意數字; [abc] abc中任意一個
[^abc] 取反的意思, 匹配任意非abc的一個字符;
() 在子shell中執行括號中的命令, 如(ls), (cd xx/yy);
{} 集合; mkdir -p a/{b,c}; a目錄下有b和c目錄
mkdir -p a{b/m,c/n}; a目錄下有b和c目錄, b下有m,c下有n
還可嵌套使用: mkdir -p a{b/{x,y},c/n}; b下有x,y兩個目錄
{} 中的元素會被挨個拼接, 用法如下:
4. shell中變量的使用(使用$ip來引用變量):
shell中變量賦值可分為兩類, 分別是顯示賦值和隱式賦值
ip=1.1.1.1 或者 read ip; # read命令會讀取命令行中的輸入內容, 並賦值給變量ip
read -p "請輸入內容: " ip
5. shell中的位置變量,
與普通變量不同, 普通變量都需要先定義(無論是顯示賦值還是read), 再通過$name來引用; 而位置變量不同,
位置變量是系統內置的, 無需定義, 直接在使用處通過$number來引用即可, 其會自動從命令行中對應位置獲取
值並引用.
6. shell中變量分類(當前shell和全局):
直接定義的ip=1.1.1.1只在當前shell中有效, 可使用export ip來使ip為全局作用域生效, 此處全局也只限於當前shell
及其子shell中使用, 跨端的shell是引用不到的.
7. 注意理解當前shell和子shell的區別, 當前shell中不使用export定義的變量, 使用bash, sh或相對路徑執行的文件內是
引用不到變量的, 但是使用. 或者 source執行的文件是可以引用的; 同理在文件中定義的變量, 要想在shell中引用到
就必須使用. 或source來執行, 因為這兩種方式是在當前shell中執行文件內容的.
反引號中的命令也是在子shell中執行的, 如果在反引號中調用函數, 則在當前shell中無法引用到函數中不適用local定義
定義的變量, 就是因為反引號造成的.
8. 查看系統中已存的所有環境變量, 直接輸入: env 回車即可.
basename 用來獲取文件名, 使用$0時,獲取到的是輸入可能是帶路徑的文件, 常配合basename使用來獲取文件名
如: basename $0; dirname 用來獲取目錄名稱,及文件名之前的所有