1.文件名通配---globbing(整體文件名匹配)
匹配模式(與正則表達(dá)式不同)
--------------------
*:匹配任意長度的任意字符:
pa*,*pa*,*pa,*p*a*
---------------------
?:匹配任意單個字符:
pa?
--------------------------------
[]:匹配指定范圍內(nèi)任意單個字符(對于[]里面的字符不區(qū)分大小寫)
[a-z],[abc],[0-9]
[[:upper:]] 只匹配大寫字母
[[:lower:]] 所有小寫字母
[[:alpha:]] 所有字母
[[:digit:]] 所有數(shù)字
[[:alnum:]] 所有字母和數(shù)字
[[:space:]] 所有空白字符
[[:punct:]] 所有標(biāo)點(diǎn)符號
[^]:匹配指定范圍外的任意單個字符
2.IO重定向
程序的數(shù)據(jù)流有三種:
輸入的數(shù)據(jù)流<-- 標(biāo)準(zhǔn)輸入(stdin),鍵盤
輸出的數(shù)據(jù)流-->標(biāo)準(zhǔn)輸出(stdout),顯示器
錯誤輸出流-->標(biāo)準(zhǔn)輸出(stderr),顯示器
fd:file descriptor , 文件描述符
標(biāo)準(zhǔn)輸入:0
標(biāo)準(zhǔn)輸出:1
錯誤輸出:2
IO重定向:
cat的讀取與輸出:其自身帶有<與>功能
覆蓋輸出重定向: >
[root@localhost tmp]# cat /etc/issue > /tmp/issue.out
[root@localhost tmp]# cat /tmp/issue.out > /dev/tty3
特性:覆蓋輸出辫诅,將原文件的內(nèi)容覆蓋!
追加輸出重定向:>>
特性:追加輸出
可以通過[root@localhost tmp]# set -C
來設(shè)置 禁止覆蓋輸出重定向,但是僅對當(dāng)前shell有效
在這之后裹虫,如果仍然想要強(qiáng)行覆蓋輸出重定向
~]#cat etc/issue >| /tmp/issue.out
來達(dá)成
~]#set +C 再次關(guān)閉禁止輸出覆蓋重定向功能
-------------------------------------------------------------------------
錯誤輸出流重定向:
~]# cat /etc/issue1 2> /tmp/issue.err
將這個命令產(chǎn)生的錯誤流定向給issue.err(覆蓋岛心,如果不產(chǎn)生錯誤设预,就會清空目標(biāo)文件的內(nèi)容)
~]# cat /etc/issue1 2>> /tmp/issue.err
追加輸入
注意點(diǎn):
當(dāng)該命令沒有產(chǎn)生錯誤時靠汁,就是說不會產(chǎn)生錯誤信息溃蔫,那么就不會定向到issue.err中急黎,而是將issue1的內(nèi)容輸出到屏幕上
---------------------------------------------------------------------------
合并正常輸出流和錯誤輸出流1
~] cat /etc/sss &> /tmp/sss.out
~] cat /etc/sss &>> /tmp/sss.out
-----------------------------------
合并正常輸出流和錯誤輸出流2 扎狱, 注意侧到,不能寫2>>,更改最前面的就可以了
~]# cat /etc/sss >> /tmp/sss.out 2>&1 (追加 )
~]# cat /etc/sss > /tmp/sss.out 2>&1 (覆蓋)
tr命令 數(shù)據(jù)變換(不修改原文件)也有輸入和輸出目標(biāo)
tr [OPTION]... SET1 [SET2]
[root@localhost tmp]# tr 'a-z' 'A-Z'
aaaffa
AAAFFA
afacsv
AFACSV
ada
ADA
用法1:
tr SET1 SET2 </PATH/FROM/SOMEFILE
用法2:刪除符合SET1中字符的數(shù)據(jù)
tr -d SET1 < /PATH/FROM/SOMEFILE
輸入重定向無追加,寫<< 代表重新建立一個臨時文件淤击,然后向這個臨時文件中輸入值匠抗,如果是tr,就經(jīng)過變換污抬,再到 >中汞贸,如果是cat,就是直接到>的文件中
HERE Document : <<
例子:
[root@localhost ~]# cat > /tmp/cat.out <<EOF
> how aaa
> aaa
> dd
> EOF
[root@localhost ~]# cat /tmp/cat.out
how aaa
aaa
dd
管道:將前一個命令的輸出數(shù)據(jù)流印机,直接定向給后一個程序當(dāng)做輸入數(shù)據(jù)流,可以實(shí)現(xiàn)多級連接
例子1
[root@localhost ~]# cat /etc/issue | tr 'a-z' 'A-Z'
\S
KERNEL \R ON AN \M
------------------------------------------------------------------
例子2
[root@localhost ~]# who
(unknown) :0 2019-06-16 07:41 (:0)
root tty2 2019-06-16 07:41
root pts/1 2019-06-16 08:33 (192.168.43.74)
root tty3 2019-06-16 09:18
[root@localhost ~]# who | head -2
(unknown) :0 2019-06-16 07:41 (:0)
root tty2 2019-06-16 07:41
[root@localhost ~]# who | head -2 | tr 'a-z' 'A-Z'
(UNKNOWN) :0 2019-06-16 07:41 (:0)
ROOT TTY2 2019-06-16 07:41
--------------------------------------------------------------
例子3
[root@localhost ~]# who | head -2 | tr -d '0-9'
(unknown) : -- : (:)
root tty -- :
--------------------------------------------------------------
tee:把數(shù)據(jù)流復(fù)制一份矢腻,一份給/tmp/class.txt,一份給 tr 'a-z' 'A-Z'
[root@localhost ~]# who | tee /tmp/class.txt | tr 'a-z' 'A-Z'
(UNKNOWN) :0 2019-06-16 07:41 (:0)
ROOT TTY2 2019-06-16 07:41
ROOT PTS/1 2019-06-16 08:33 (192.168.43.74)
ROOT TTY3 2019-06-16 09:18
[root@localhost ~]# cat /tmp/class.txt
(unknown) :0 2019-06-16 07:41 (:0)
root tty2 2019-06-16 07:41
root pts/1 2019-06-16 08:33 (192.168.43.74)
root tty3 2019-06-16 09:18
[root@localhost ~]#
----------------------------------------------
將數(shù)據(jù)流一份保留在文件中,一份輸出出來交給后面的管道
[root@localhost ~]# who |tee /tmp/class.txt
(unknown) :0 2019-06-16 07:41 (:0)
root tty2 2019-06-16 07:41
root pts/1 2019-06-16 08:33 (192.168.43.74)
root tty3 2019-06-16 09:18
特殊設(shè)備
/dev/null
加設(shè)備射赛,數(shù)據(jù)丟入進(jìn)去之后多柑,相當(dāng)于直接丟棄