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'