日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统服务及shell编程

發布時間:2024/4/15 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统服务及shell编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

防火墻(ufw)

  • 說明:簡單版本的防火墻,底層依賴于iptables。

  • 安裝:sudo apt-get install ufw

  • 查看狀態:sudo ufw status

  • 開啟/關閉:sudo ufw enable|disable

  • 默認允許/禁止:sudo ufw default allow|deny

  • 允許/禁止:sudo ufw allow|deny 服務|port,如:sudo ufw deny ssh

  • 移除規則:sudo ufw delete deny ssh

管道及xargs

  • |:管道,將前面命令的輸出作為后面命令的輸入參數,如:ls /bin | grep '^m'

  • xargs:有些命令無法接收管道參數,可以通過xargs解決,如:find -name 1.sh | xargs rm -rf

重定向

  • 三個數據流:標準輸入(stdin)、標準輸出(stdout)、標準錯誤(stderr)

  • 在linux,啟動任意的進程,系統會自動創建上面三個數據流,其實就是三個文件

  • 三個文件的描述符分別是:0、1、2,都指向了終端

  • 重定向就是改變原來的表現位置。

  • 示例演示:

    輸出重定向:
    ls > 1.txt # 將ls的輸出結果保存到1.txt文件中,會新建文件1.txt,若文件存在則會清空
    ls >> 1.txt # 將ls的輸出結果追加到1.txt文件中,文件不存在也會創建
    錯誤重定向:
    ls /xxx 2> 2.txt # 將錯誤信息保存到2.txt
    同時重定向輸出和錯誤:
    ls /xxx /home &> 3.txt # 同時將錯誤和輸出保存到3.txt文件中

shell簡介

  • 什么是shell編程?

    • 將終端下編寫的命令等保存到文件中,就稱為shell編程。

  • shell類型?

    • ash、bash、csh、ksh

    • 查看系統shell解析器:echo $SHELL

    • 當前系統可以shell解析器:/etc/shells文件

  • shell腳本的執行

    • 指定shell解析器執行指定腳本:bash hello.sh,不需要添加可執行權限

    • 將shell腳本作為可執行文件執行,必須添加可執行權限

      • 添加可執行權限:sudo chmod +x world.sh

      • 在腳本開頭指定shell解析器:#! /bin/bash,其他位置的#表示注釋

      • 執行腳本:

        • 在當前目錄:./world.sh

        • 不在當前目錄:/home/jerry/shell/world.sh

shell變量

  • 變量定義:name='dahua','='兩邊不能有空格

  • 打印變量:echo $name 或 echo ${name}

  • 銷毀變量:unset name,之后就不能再使用

  • 聲明常量:readonly name='dahua'

  • 使用說明:'='兩邊不能有空格,只讀變量不能修改

變量分類

  • 本地變量:只適用于當前shell的變量

  • 環境變量:適用于整個系統,通常都是純大寫的

    • 查看系統環境變量:env

    • 查看指定環境變量:echo $PATH

    • 若想在任意位置都可執行指定程序,可以將程序所在的路徑添加到環境變量PATH。

    • 修改:

      • 單次:export PATH=$PATH:/home/jerry/shell

      • 永久:

        • 系統:/etc/profile

        • 用戶:~/.profile、~/.bashrc、~/.bash_profile

        • 把導出的語句添加到文件末尾即可

        • 使文件生效:重啟終端 或 source ~/.bashrc

  • 位置變量:

    • $0:執行腳本的名字

    • $1 ~ $9:傳遞給腳本的參數

  • 特殊變量:

    • $#:傳遞給腳本的參數個數

    • $*:傳遞給腳本的所有參數

    • $?:上次命令的執行情況,0表示正確,其他表示錯誤

字符串類型

  • 單引號:其中的字符都會原樣輸出,不會被解析

  • 雙引號:可以放除了$、`、\、"以外任意字符,其中的變量等會被解析

  • 反引號:將其中的內容作為命令執行,如:

    echo `date`
  • '':轉義特定的字符,如:$、*、\、?、|、`、^、&

  • 字符串長度:${#name}

  • 字符串提取:${name:2:3},從變量name中下表為2的地方提取3個字符

數組類型

  • 定義:a=(1 2 3)

  • 成員訪問:echo ${a[2]}

  • 個數統計:echo ${#a[@]}

  • 所有元素:echo ${a[*]}

seq

  • 說明:生成指定范圍的連續整數

  • 示例:seq 10,生成1~10的連續整數,seq 2 10,生成2~10的連續整數

expr

  • 說明:運算一個表達式

  • 示例:

    expr 2 + 3 結果為5
    echo `expr 3 + 5` 結果會打印8
    expr 3 \* 5 結果為15,*需要轉義

各種運算

  • test命令:成功為真,失敗為假。

    #!/bin/bash
    ?
    if test 1 -lt 2; then
    echo 'ok'
    fi
    ?
    if [ 1 -lt 2 ]; then
    echo 'okok'
    fi
  • 數值比較運算

    • -lt:小于

    • -le:小于等于

    • -gt:大于

    • -ge:大于等于

    • -eq:等于

    • -ne:不等于

  • 字符串測試

    • =:相等

    • !=:不相等

    • -z:字符串的長度是否為0

    • -n:字符串的長度是否不為0

  • 文件判斷

    • -f:普通文件

    • -d:目錄文件

    • -c:字符設備文件

    • -b:塊設備文件

    • -w:是否可寫

    • -x:是否可執行

    • -s:文件存在,并且至少有一個字符

  • 邏輯運算

    • -a:邏輯與(and),也可以使用&&來代替

    • -o:邏輯或(or),也可以使用||來代替

    • !:邏輯非

    • 示例:

    #! /bin/bash
    ?
    if [ 1 -lt 3 -a 2 -lt 3 ]; then
    echo 'ok'
    fi
    ?
    if [ 1 -lt 3 ] && [ 2 -lt 3 ]; then
    echo 'ok'
    fi
    ?
    if [ ! 1 -gt 3 ]; then
    echo 'xxx'
    fi

分支結構

  • if-elif-else:

    #! /bin/bash
    ?
    if [ 8 -lt 3 ]; then
    echo '8 < 3'
    elif [ 8 -lt 9 ]; then
    echo '8 < 9'
    else
    echo 'xxx'
    fi
  • case:

    #! /bin/bash
    ?
    read -p 'please input any charactor:' ch
    ?
    case $ch in
    [a-z])
    echo 'alpha'
    ;;
    [0-9])
    echo 'numberic'
    ;;
    *)
    echo 'others'
    ;;
    esac

循環結構

  • for-in 及 for

    #! /bin/bash
    ?
    a=(1 2 3 4 5)
    # for x in a b c
    # for x in /etc/*
    # for x in `seq 1 10`
    for x in ${a[*]}
    do
    echo $x
    done
    ?
    for ((i=0;i<${#a[@]};i++))
    do
    echo ${a[$i]}
    done
  • while

    #! /bin/bash
    ?
    i=1
    sum=0
    ?
    while [ $i -le 100 ]
    do
    #((sum+=$i))
    #((i++))
    ?
    #let sum+=$i
    #let i++
    ?
    sum=$[$sum+$i]
    i=$[$i+1]
    ?
    done
    ?
    echo $sum
  • until:條件成立,循環停止

    #! /bin/bash
    ?
    i=1
    until [ $i -gt 10 ]
    do
    echo $i
    ((i++))
    done
  • break、continue自行學習

函數使用

  • demo(){
    ?echo 'for func'
    }
    ? ?
    demo

arg(){ echo ?2 echo ?# return 250 }

arg abc def

$?表示函數的返回值

echo $?

?
?
?
?

?

轉載于:https://www.cnblogs.com/542684416-qq/p/9897136.html

總結

以上是生活随笔為你收集整理的系统服务及shell编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。