檢視當前系統的shell型別
echo $shell
檢視當前系統環境支援的shell
cat /etc/shells
單行注釋:#
多行注釋: 《執行方式: /bin/bash shell指令碼路徑位置
指令碼首行: #!/bin/bash
本地變數:在當前系統的某個環境下才能生效的變數,作用範圍小
全域性變數:在當前系統的所有環境下都能生效的變數
shell內建變數:
本地變數普通變數的三種定義方式:
1 變數名= … 不能有空格
2 變數名= 『…』 引號內是什麼就輸出什麼
3 變數名= 「…」 引號內如果有其它變數名則先進行轉義再輸出
本地變數命令變數的二種定義方式:
1 變數名=命令
2 變數名= $(命令) 用的比較多
命令變數先執行命令語句,然後把命令的結果賦值給變數
全域性變數的檢視方式
env 顯示全部的全域性變數
env | grep 變數名 查詢全域性變數
全域性變數的定義
export 變數=值
shell內建變數:
$0 顯示指令碼的名稱
$n n為當前指令碼傳入的第n個位置的引數(從1開始)
$# 顯示指令碼引數總數量
$? 獲取執行上乙個命令的返回值(0為成功,非0為非成功)
檢視變數的方式:
1 echo 變數名
私下裡用
2ech
o"
變數名 私下裡用 2 echo "
變數名私下裡
用2ec
ho"變數名" 私下裡用
3 echo $ 用於echo 「da 變數名
"引號內
輸出多個
內容4e
cho"
"引號內輸出多個內容 4 echo "
變數名"引號
內輸出多
個內容4
echo
"」 標準使用方式
刪除變數: unset 變數名 可以刪除全域性變數和本地變數
字串精確擷取:$
$ 從倒數第5個字元開始擷取5個字元,0不能省略
預設值:
$ 如果變數有值則輸出值如果沒有則為預設值
變 量名
+預設值
無論變數
是否有值
都輸出默
認值驗證
表示式:
1tes
t條件表
達式2[
條件表達
式]根據
無論變數是否有值都輸出預設值 驗證表示式: 1 test 條件表示式 2 [ 條件表示式 ] 根據
變數名+預設
值無論變
量是否有
值都輸出
預設值驗
證表示式
:1te
st條件
表示式2
[條件表
達式]根
據?是否為0來判斷條件是否成立
邏輯表示式:&& 和 ||
命令1 && 命令2 : 命令1執行成功才能執命令2
命令1 || 命令2 : 命令1執行失敗才能執命令2
檔案表示式:-f 判斷是否是乙個檔案-d 判斷是否是乙個目錄-x 判斷是否具有可執行許可權
數值判斷符:-eq 相等 -gt 大於 -lt 小於 -ne 不等於
字串比較:== 內容一致 != 內容不一致
計算表示式:$((計算表示式)) 或 let 計算表示式
後台展示符號: 命令 & 將乙個命令從前台轉到後台執行
資訊符號:
1表示正確輸出的資訊 cat nihao.txt 1 >> zhengque
2表示錯誤輸出的資訊dsafasfsa 2>>errfile
2>&1 表示所有輸出的資訊 bash ceshi.sh >> ceshi-all 2>&1
sed命令
sed 引數 匹配條件 檔名
引數:-i 對檔案進行真正的修改 ,不加該引數表示模擬修改實際上不對檔案進行編輯
動作:-a 在匹配到的內容下一行增加內容
-i 在匹配到的內容上一行增加內容
-d 刪除匹配到的內容
-s 替換匹配到的內容
替換:sed -i 『行號s#原內容#替換後內容#列號』 檔名 (行號不指定為所有行,列號不指定為第乙個,全列為g)
增加:sed -i 『行號a或者i\增加的內容』 檔名 (3,4a表示3~4包含首尾)
刪除:sed -i 『行號d』 檔名 (3,4d表示3~4包含首尾)
awk命令
awk 引數 動作 檔名
引數:-f 指定行的分隔符
動作:print 顯示內容:$0 顯示當前行的所有內容 $n 顯示當前行的第n列內容
awk 『nr==1 』 awk.txt 顯示第一行第一列和第三列的內容(若沒有nr則預設所有行)
find命令
find 路徑 引數 關鍵字
引數:-name 按照檔名查詢檔案
-perm 按照檔案許可權查詢檔案
-user 按照檔案屬性查詢檔案
-type 查詢某一型別的檔案(d目錄 f普通檔案)
find / -name -type d "get_"(可以用正則表示任意字元)
if語句最完整版
if [ 條件 ]
then
指令1elif [ 條件 ]
then
指令2else
指令3fi
case語句
case 變數名 in
值1)指令1
;;值2)
指令2;;
*) # *代表所有相當於if語句中的else
指令3;;
esac
for語句
for 值 in 列表
do指令
done
while語句
while 條件
do指令
done
until語句 直到…條件符合
until 條件
do指令
done
函式定義:
函式名()
呼叫函式:函式名 引數
指令碼除錯:
/bin/bash 引數 指令碼路徑
-n 檢查指令碼中的語法錯誤
-v 先顯示指令碼所有內容,然後執行指令碼,結果輸出,如果執行遇到錯誤,將錯誤輸出。
-x 將執行的每一條命令和執行結果都列印出來
常見shell命令分享
1.變數名的賦值符號前後不能留有空格 2.vi proc meminfo 檢視當前虛擬記憶體的狀態 3.ipcs 命令用來檢視系統上的當前共享記憶體頁面 4.bash shell 啟動會自動處理 bashrc etc bashrc 修改 vim bashrc 重啟 source bash profi...
shell技巧分享(二)
這是乙個系列文章,主要分享shell 部分功能僅適用於bash 的使用建議和技巧,每次分享3點,希望你能有所收穫。sleep 1234 1 19340 sleep 1234 2 19342 sleep 1234 3 19344 alias grep psg alias psg ps ef grep ...
shell指令碼分享
1 編寫指令碼 bin per.sh,判斷當前使用者對指定引數檔案,是否不可讀並且不可寫 2 編寫指令碼 root bin excute.sh,判斷引數檔案是否為sh字尾的普通檔案,如果是,新增所有人可執行許可權,否則提示使用者非指令碼檔案 3 編寫指令碼 root bin nologin.sh和l...