bash shell用法小記

來源:互聯網
上載者:User

標籤:bash   shell   

bash shell用法小記

shell的使用博大精深,,本人梳理基礎知識,整理一下簡單的用法,具體的請因需求自行研究。


1. 計算# echo $((1+2))3# echo $((1+2+3))6# echo 3+2+5 |bc102. if的用法if [ $i -eq 0 ]; then    xxxelse    xxxfi整數比較:-eq 等於,如:if [ "$a" -eq "$b" ]   -ne 不等於,如:if [ "$a" -ne "$b" ]   -gt 大於,如:if [ "$a" -gt "$b" ]   -ge 大於等於,如:if [ "$a" -ge "$b" ]   -lt 小於,如:if [ "$a" -lt "$b" ]   -le 小於等於,如:if [ "$a" -le "$b" ]   <   小於(需要雙括弧),如:(("$a" < "$b"))   <=  小於等於(需要雙括弧),如:(("$a" <= "$b"))   >   大於(需要雙括弧),如:(("$a" > "$b"))   >=  大於等於(需要雙括弧),如:(("$a" >= "$b")) 字串比較:通常是這樣做的:if [ X"$test" = X"test" ]= 等於,如:if [ "$a" = "$b" ]   -d 目錄-e 存在-f 檔案-n 非Null 字元串-z Null 字元串 3. for的用法array1=("d.com" "e.com" "f.com")len=${#array1[@]}for ((i=0;i<$len;i++))do    echo ${array1[$i]}donefor a in $(seq 1 100);do    echo $a    sleep 1sdone4. case的用法case $1 in    start|stop|reload)        $1        ;;    *)        echo "Usage: $0 [start|stop|reload]"        ;;esac5. while的用法while truedo    echo "abc"    read -p "請輸入: " abc    ddd="$abc"    if [ ${#ddd} -ne 5 ]; then        echo "請重新輸入!!!"    else        break    fidone6. 參數##  $0 是這個bash檔案的名稱;#  $? 是上一指令的傳回值;#  $* 是該指令碼調用的所有參數;#  [email protected] 基本與上面的$*相同。區別是:#      $* 返回的是一個字串,字串中用空格分隔開,而 [email protected] 則返回多個字串;#  $# 是所有位置參數的個數;##ab=($(ls))echo "1: "${ab[@]}echo "2: "${#ab[@]}echo "3: "[email protected]echo "4: "$#echo "5: "$?7. 正則 Regex匹配"=~" [[ $XX =~ ^$XXX ]] The =~ Regular Expression matching operator within a double brackets test expression.$ [[ "# test2" =~ ^# ]] && echo yes || echo noyes8. 截取字串假設有:f="/a/b/c/d/e.name.ext"則:# basename $fe.name.ext# dirname $f    /a/b/c/d特殊用法:利用${}中的#,%,*來輸出指定的內容1)去掉第一個/,以及左邊的字串 # echo ${f#*/}a/b/c/d/e.name.ext2)去掉最後1個/,以及左邊的字串# echo ${f##*/}e.name.ext3)去掉最後一個/,以及右邊的字串# echo ${f%/*} /a/b/c/d4)去掉第一個/,以及右邊的字串# echo ${f%%/*} (空)上面,是根據“/”來做分割,也可以用“."來分隔,不妨一試。# echo ${f#*.} name.ext# echo ${f##*.}ext# echo ${f%.*} /a/b/c/d/e.name# echo ${f%%.*}/a/b/c/d/e9. 指令碼放入後台,輸出到日誌sh test.sh >1.log 2>&1 &sh test.sh >/dev/null 2>&1 &這裡需要理解幾個小東西的作用:/dev/null   理解成空裝置,這是一個特殊的檔案,這裡的作用是丟棄輸出的內容2>&1        0 輸入  1 輸出  2 錯誤 這裡是將2重新導向到1&           將test.sh放入後台執行,請思考,還有其他的什麼方式也可以將程式放入後台?10. 管道通過“|” 把輸出匯入到另一個程式的輸入中去處理,例如:echo ‘abc, def‘ |cut -d ‘,‘ -f 111. 命令跟蹤調試sh -x test.sh12. 快速鍵Ctrl + a 切換到命令列開始Ctrl + b - Move back a charCtrl + c 終止命令Ctrl + d 退出shell,logoutCtrl + e 切換到命令列末尾Ctrl + l 清除螢幕內容Ctrl + k 剪下清除游標之後的內容ctrl + q 恢複刷屏Ctrl + r 在曆史命令中尋找ctrl + s 可用來停留在當前Ctrl + u 清除剪下游標之前的內容Ctrl + y 粘貼剛才所刪除的字元Ctrl + z 轉入後台運行!! 重複執行最後一條命令↑(Ctrl+p) 顯示上一條命令↓(Ctrl+n) 顯示下一條命令!$ 顯示系統最近的一條參數13. shell傳遞中文到python出現異常export LANG="en_US.UTF-8";/usr/local/bin/python3  xxx.py


bash shell用法小記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.