1. 程式人生 > >5運維必備知識-linux使用者組管理及使用者許可權

5運維必備知識-linux使用者組管理及使用者許可權

bash的基礎特性:

  globbing:檔名通配

    匹配模式:元字元

      *:匹配任意長度的任意字元

      ?:匹配任意單個字元

      [ ]:匹配指定範圍內的任意單個字元

        有幾種特殊格式:

          [a-z],[A-Z],[0-9],[a-z0-9],[abcxyz]僅匹配一個字元

          [[:upper:]] 表示所有大寫字母

          [[:lower:]] 表示所有小寫字母

          [[:alpha]] 表示所有字母

          [[:digit]] 表示所有數字

          [[:alnum:]] 表示所有的字母和數字

          [[:space:]] 表示所有空白字元

          [[:punct:]] 表示所有標點符號

      [^]:匹配指定範圍外的任意單個字元

        [^[:upper:]]

        [^0-9]

        [^[:alnum:]]

    練習1:顯示/var目錄下以l開頭,以一個小寫字母結尾,且中間出現一位任意字元的檔案或目錄

     ls -d /var/l?[[:lower:]]

    練習2:顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的檔案或目錄

    ls -d /etc/[0-9]*[^0-9] 或 ls -d /etc/[[:digit:]]*[^[:digit:]]

    練習3:顯示/etc目錄下,以非字母開頭,後面跟一個字母及其它任意長度任意字元的檔案或目錄

    ls -d /etc/[^a-z][a-z]* 或 ls -d /etc/[^[:alpha:]][[:alpha:]]*

    練習4:複製/etc目錄下,所有以m開頭,以非數字結尾的檔案或目錄至/tmp/magedu,com目錄

    cp -r /etc/m*[^0-9] /tmp/magedu.com/  

    cp -r /etc/m*[^[:digit:]] /tmp/magedu.com/

    練習5:複製/usr/share/man目錄下,所有以man開頭,後跟一個數字結尾的檔案或目錄至/tmp/man/目錄下

    cp -r /usr/share/man/man[0-9] /tmp/man/

    cp -r /usr/share/man/man[[:digit:]] /tmp/man/

    練習6:複製/etc目錄下,所有以.conf結尾,且以m,n,r,p開頭的檔案或目錄至/tmp/conf.d目錄下

    cp -r /etc/[mnrp]*.conf /tmp/conf.d/

IO重定向及管道

  程式:指定+資料

    程式:IO

    可用於輸入的裝置:檔案

      可以是鍵盤裝置、檔案系統上的常規檔案、網絡卡等

    可用於輸出的裝置:檔案

      可以是顯示器、檔案系統上的常規檔案、網絡卡等

    程式的資料流有三種:

      輸入的資料流:<-- 標準輸入(stdinput),鍵盤

      輸出的資料流:--> 標準輸出(stdout),顯示器

      錯誤輸出流:--> 錯誤輸出(stderr),顯示器

    fd:file desciptor,檔案描述符

      標準輸入:0

      標準輸出:1

      錯誤輸出:2

  IO重定向:

    輸出重定向:>

      特性:覆蓋輸出

    輸出重定向:>>

      特性:追加輸出

    # set -C 

      禁止覆蓋輸出重定向至已存在的檔案

      此時可使用強制覆蓋輸出:>|

    # set +C

      關閉上述特性

    set -C 只對當前shell生效

    錯誤輸出流重定向:2>,2>>

    合併正常輸出流和錯誤輸出流:

      (1)&>,&>>

      (2)comman > /path/to/somefile 2>&1

          comman >> /path/to/somefile 2>&1

    特殊裝置:/dev/null

    輸入重定向:<

    tr命令:

      tr [OPTION]... SET1 [SET2]

        把輸入的資料當中的字元,凡是在SET1定義範圍內出現的,通通對位轉換為SET2出現的字元

      用法1:

        tr SET1 SET2 < /PATH/FROM/SOMEFILE

      用法2:

        tr -d SET1 < /PATH/FROM/SOMEFILE

          -d:刪除檔案中你所指定的字元

      注意:不修改原檔案,只打印到螢幕上

      <<:輸出成文件

        cat << EOF

        cat > /PATH/TO/SOMEFILE << EOF

      

      tee命令:

        command | tee /PATH/TO/SOMEFILE

          能夠將command結果輸出到螢幕上並且可以儲存到指定檔案

      

 

     

      管道:連線程式,實現將前一個命令的輸出直接定向後一個程式當作輸入資料流

        command1 | command2 | command3 | ...

      

      練習1:把/etc/passwd檔案的前六行的資訊轉換為大寫字元後輸出

      head -n 6 /etc/passwd | tr 'a-z' 'A-Z'