通配符及管道命令

一.常用通配符

globbing:文件名通配(整體文件名匹配,而非部分)
匹配模式:元字符

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

常用格式

pa*,*pa*,*pa,*p*a*

實例

// 找出/etc/下面以cron開頭的文件名
[root@localhost ~]# ll -d /etc/cron*
drwxr-xr-x. 2 root root 4096 7月   2 2017 /etc/cron.d
drwxr-xr-x. 2 root root 4096 7月   2 2017 /etc/cron.daily
-rw-r--r--. 1 root root    0 7月  19 2011 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 7月   2 2017 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 7月   2 2017 /etc/cron.monthly
-rw-r--r--. 1 root root  457 9月  27 2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 9月  27 2011 /etc/cron.weekly

?:匹配任意單個字符

常用格式

pa?,??pa,p?a?

實例

// 找出/etc/下面文件名剛好是五個字母的文件名
[root@localhost ~]# ll -d /etc/?????    <==五個渤愁?對應(yīng)五個字母
drwxr-x---. 2 root root 4096 7月   2 2017 /etc/audit
drwxr-xr-x. 4 root root 4096 7月   2 2017 /etc/avahi
drwxr-xr-x. 2 root root 4096 5月  11 01:08 /etc/blkid
drwxr-xr-x. 4 root root 4096 7月   2 2017 /etc/fonts
-rw-r--r--. 1 root root  899 7月   2 2017 /etc/fstab
......
-rw-r--r--. 1 root root 1962 2月  17 2012 /etc/vimrc

[ ]:匹配指定范圍內(nèi)的任意字符

幾種特殊格式:

  • [a-z]牵祟,[A-Z]深夯,[0-9]抖格,[a-z0-9]
  • [[:upper:]]:所有大寫字母
  • [[:lower:]]:所有小寫字母
  • [[:alpha:]]:所有字母
  • [[:digit:]]:所有數(shù)字
  • [[:alnum:]]:所有字母和數(shù)字
  • [[:space:]]:所有空白字符
  • [[:punct:]]:所有小寫字母

實例

// 找出/etc/下面文件名含有數(shù)字的文件名
[root@localhost ~]# ll -d /etc/*[0-9]*
drwxr-xr-x. 4 root root 4096 7月   2 2017 /etc/dbus-1
-rw-r--r--. 1 root root 5139 4月  17 2012 /etc/DIR_COLORS.256color
drwxr-xr-x. 3 root root 4096 7月   2 2017 /etc/gnome-vfs-2.0
drwxr-xr-x. 3 root root 4096 7月   2 2017 /etc/gtk-2.0
drwxr-xr-x. 2 root root 4096 7月   2 2017 /etc/iproute2
-rw-r--r--. 1 root root  449 5月   2 2012 /etc/krb5.conf
-rw-r--r--. 1 root root  801 9月   8 2009 /etc/mke2fs.conf
drwxr-xr-x. 5 root root 4096 7月   2 2017 /etc/polkit-1

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

  • [^[:upper:]]:匹配指定范圍外的任意單個字符

實例

// 找出/etc/下面文件名開頭非為大寫字母的文件名
[root@localhost ~]# ll -d /etc/[^A-Z]*
drwxr-xr-x. 3 root root  4096 7月   2 2017 /etc/abrt
drwxr-xr-x. 4 root root  4096 7月   2 2017 /etc/acpi
-rw-r--r--. 1 root root    44 4月  23 22:53 /etc/adjtime
-rw-r--r--. 1 root root  1512 1月  12 2010 /etc/aliases
-rw-r--r--. 1 root root 12288 7月   2 2017 /etc/aliases.db
drwxr-xr-x. 2 root root  4096 7月   2 2017 /etc/alsa
drwxr-xr-x. 2 root root  4096 7月   2 2017 /etc/alternatives
  • 練習1:顯示 /var目錄下所有以l開頭,以一個小寫字母結(jié)尾咕晋,且中間出現(xiàn)一位數(shù)字的文件或目錄雹拄;
[root@localhost ~]# ls -d /etc/l?[[:lower:]]
/etc/lvm
  • 練習2:顯示/etc目錄下,以任意一位數(shù)字開頭掌呜,且以非數(shù)字結(jié)尾的文件或目錄滓玖;
ls -d /etc/[0-9]*[^0-9]
  • 練習3:顯示/etc目錄下踪区,以非字母開頭侥衬,后面跟一個字母及其它任意長度任意字符的文件或目錄;
ls -d /etc/[^a-z][a-z]*
  • 練習4:復制/etc目錄下耳幢,所有以m開頭模暗,以非數(shù)字結(jié)尾的文件或目錄至/tmp/test目錄禁悠;
[root@localhost ~]# cp -r /etc/m*[^0-9] /tmp/test
[root@localhost ~]# cd /tmp/test
[root@localhost test]# ls
magic    mail.rc    man.config  mime.types   modprobe.d  mtab
mailcap  makedev.d  maven       mke2fs.conf  motd        my.cnf
  • 練習5:復制user/share/man目錄下,所有以man開頭兑宇,后跟一個數(shù)字結(jié)尾的文件或目錄至/tmp/man/目錄下碍侦;
cp -r /user/share/man/man*[0-9] /tmp/man/
  • 練習6:復制/etc目錄下,所有以.conf結(jié)尾,且以m瓷产,n站玄,r,p開頭的文件或目錄至/tmp/conf.d/目錄下濒旦;
cp -r /etc/[mnrp]*.conf /tmp/conf.d/

注意:4/5/6題需要自己先創(chuàng)建目錄

二.文本處理工具

  • cut:選取命令
  • wc:字符統(tǒng)計
  • sort:排序
  • uniq:排序

1.cut命令

命令格式

cut OPTION...[FILE]...

常用選項

-d:后面跟分隔符株旷,與-f一起使用;
-f:指明需要取出的字段
    #:第#個字段
    #疤估,#灾常,#:離散的字段,如1,2,3
    #-#:連續(xù)的多個字段铃拇,如1-6
   混合使用:1-3,7,9,11-15

實例

[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
//以:作為分隔符钞瀑,將上述字段分成了8個字段
[root@localhost ~]# echo $PATH | cut -d ':' -f 3,5
/usr/local/bin:/bin

//用last在顯示的登錄者的信息中僅留下用戶大名
[root@localhost ~]# last
mageia   pts/1        192.168.0.8      Wed May 23 05:02 - 05:02  (00:00)    
root     pts/0        192.168.0.8      Thu May 17 23:23   still logged in   
logstash pts/1        192.168.0.8      Wed May 16 00:12 - 16:56  (16:43)    
......
wtmp begins Sun Jul  2 04:21:54 2017
[root@localhost ~]# last | cut -d ' ' -f 1
mageia
root
logstash
......
wtmp

2.wc命令

常用格式

cut OPTION...[FILE]...

常用選項

-l:僅列出行;
-w:僅列出多少字(英文單字)慷荔;
-c:統(tǒng)計字符個數(shù)

實例

[root@localhost ~]# cat /etc/man.config | wc
    152     765    4940
[root@localhost ~]# cat /etc/man.config | wc -l
152
[root@localhost ~]# cat /etc/man.config | wc -w
765
[root@localhost ~]# cat /etc/man.config | wc -c
4940

3.sort命令

命令格式

sort OPTION...[FILE]...

常用選項

-f:忽略大小寫
-r:逆序
-t:字段分隔符雕什,默認是用[Tab]鍵來分隔;
-k #:以指定字段為標準排序显晶;
-n:使用“純數(shù)字”進行排序
-u:相同的數(shù)據(jù)中贷岸,進出線一行代表

實例

//以“第一個”數(shù)據(jù)來排序,以“文字”類型來排序
[root@localhost ~]# cat /etc/passwd | sort
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
basher:x:502:502::/home/basher:/bin/bash
bash:x:501:501::/home/bash:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
distro:x:4017:2018::/home/distro:/bin/bash
//以“:”為分隔符磷雇,以第三字段內(nèi)容進行排序偿警,依舊為“文字”排序
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
mageia:x:1100:1100::/home/linux:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

//以數(shù)字排序
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k 3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

4.uniq命令

命令格式

uniq OPTION...[INPUT[output]]

常用選項

-c:顯示每行重復的次數(shù)
-d:僅顯示重復的行
-u:僅顯示不重復的行

實例

//使用last賬號列出,僅取出賬號列唯笙,進行排序后僅取出一位
[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq

logstash
mageia
reboot
root
wtmp

//上例的基礎(chǔ)上螟蒸,統(tǒng)計出每個賬戶的登錄次數(shù)
[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq -c
      1 
      1 logstash
      1 mageia
     10 reboot
     22 root
      1 wtmp
//reboot登錄10次,root登錄22次崩掘,其余為1次

練習

  • 1.列出當前系統(tǒng)上所有已經(jīng)登錄的用戶的用戶名七嫌,注意:同一個用戶登錄多次,則只顯示一次:
root@localhost ~]# who
root     tty1         2018-05-12 23:23
root     pts/0        2018-05-17 23:23 (192.168.0.8)
[root@localhost ~]# who | cut -d ' ' -f 1
root
root
[root@localhost ~]# who | cut -d ' ' -f 1 | sort -u
root
  • 2.取出最后登錄到當前系統(tǒng)的用戶的相關(guān)信息
[root@localhost ~]# last| head -1
mageia   pts/1        192.168.0.8      Wed May 23 05:02 - 05:02  (00:00) 
  • 3.列出當前系統(tǒng)上被用戶當作默認shell的最多的那個shell
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f7 | uniq -c
      1 /bin/bash
      4 /sbin/nologin
      1 /bin/sync
      1 /sbin/shutdown
      1 /sbin/halt
     21 /sbin/nologin
      3 /bin/bash
      1 /bin/sh
      6 /bin/bash
      1 /bin/tcsh
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f7 | uniq -c | sort -n | tail -1
     21 /sbin/nologin
  • 4.將/etc/passwd中的第三個字段數(shù)值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxuser.txt文件
[root@localhost ~]# cat /etc/passwd |sort -t ':' -k3 -n | tail -n10 | tr 'a-z' 'A-Z' > /tmp/maxuser.txt
[root@localhost ~]# cat /tmp/maxuser.txt 
BASHER:X:502:502::/HOME/BASHER:/BIN/BASH
MAGEIA:X:1100:1100::/HOME/LINUX:/BIN/BASH
SLACKWARE:X:2002:2018::/HOME/SLACKWARE:/BIN/TCSH
USER_U:X:4000:5002::/HOME/USER_U:/BIN/BASH
TEST:X:4006:4006:UNIQE:/HOME/TEST:/BIN/SH
HBASE:X:4011:4011::/HOME/HBASE:/BIN/BASH
LOGSTASH:X:4015:4015::/HOME/LOGSTASH:/BIN/BASH
USER_G:X:4016:5002::/HOME/USER_G:/BIN/BASH
DISTRO:X:4017:2018::/HOME/DISTRO:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
  • 5.取出當前主機的IP地址苞慢,提示:對ifconfig命令的結(jié)果進行切分
[root@localhost ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:48:5F:02  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe48:5f02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1574963 errors:3 dropped:3 overruns:0 frame:0
          TX packets:76439 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:125478876 (119.6 MiB)  TX bytes:6134879 (5.8 MiB)
          Interrupt:19 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:194 errors:0 dropped:0 overruns:0 frame:0
          TX packets:194 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:16230 (15.8 KiB)  TX bytes:16230 (15.8 KiB)
[root@localhost ~]# ifconfig | head -2 | tail -1 | cut -d ':' -f2
192.168.0.10  Bcast
[root@localhost ~]# ifconfig | head -2 | tail -1 | cut -d ':' -f2 |cut -d ' ' -f1
192.168.0.10
  • 6.列出/etc目錄下所有以.conf結(jié)尾的文件名诵原,并將其名字轉(zhuǎn)換為大寫后保存至/tmp/etc.conf文件中。
[root@localhost ~]# find /etc -name "*.conf" | tr 'a-z' 'A-Z' > /tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
/ETC/DRACUT.CONF
/ETC/SELINUX/SEMANAGE.CONF
/ETC/SELINUX/RESTORECOND_USER.CONF
/ETC/SELINUX/TARGETED/SETRANS.CONF
/ETC/SELINUX/RESTORECOND.CONF
......
  • 7.顯示/var目錄下一級子目錄或文件的總個數(shù)挽放。
[root@localhost ~]# ls -d /var/* 
/var/account  /var/cvs    /var/games  /var/lock  /var/nis       /var/run    /var/yp
/var/cache    /var/db     /var/lib    /var/log   /var/opt       /var/spool
/var/crash    /var/empty  /var/local  /var/mail  /var/preserve  /var/tmp
[root@localhost ~]# ls -d /var/* | wc -l
19
  • 8.取出/etc/group文件中第三個字段的數(shù)值最小的10個組的名字
[root@localhost ~]# cat /etc/group | sort -t ':' -k3 -n | head -n10 
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
[root@localhost ~]# cat /etc/group | sort -t ':' -k3 -n | head -n10 | cut -d ':' -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
  • 9.將/etc/fstab和/etc/issue文件的內(nèi)容合并為同一個內(nèi)容后保存至/tmp/etc.test文件中绍赛。
[root@localhost ~]#  cat /etc/{fstab,issue} > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test

#
# /etc/fstab
# Created by anaconda on Sun Jul  2 04:16:54 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=e31be215-2c21-45f2-a43f-1a9c6bc383f2 /                       ext4    defaults        1 1
UUID=e21d7c4d-25ec-4dd5-aa07-a30d93fa7c21 /boot                   ext4    defaults        1 2
UUID=c0171f40-f6da-4511-adde-49d051567eb2 /home                   ext4    defaults        1 2
UUID=07042df1-e750-4be6-9a53-ce80e0cd84a0 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
CentOS release 6.3 (Final)
Kernel \r on an \m
  • 參考書籍《鳥哥的Linux私房菜--基礎(chǔ)學習篇》
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辑畦,隨后出現(xiàn)的幾起案子吗蚌,更是在濱河造成了極大的恐慌,老刑警劉巖航闺,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褪测,死亡現(xiàn)場離奇詭異猴誊,居然都是意外死亡,警方通過查閱死者的電腦和手機侮措,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門懈叹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人分扎,你說我怎么就攤上這事澄成。” “怎么了畏吓?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵墨状,是天一觀的道長。 經(jīng)常有香客問我菲饼,道長肾砂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任宏悦,我火速辦了婚禮镐确,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饼煞。我一直安慰自己源葫,他們只是感情好,可當我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布砖瞧。 她就那樣靜靜地躺著息堂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪块促。 梳的紋絲不亂的頭發(fā)上荣堰,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天,我揣著相機與錄音褂乍,去河邊找鬼持隧。 笑死即硼,一個胖子當著我的面吹牛逃片,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播只酥,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼褥实,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裂允?” 一聲冷哼從身側(cè)響起损离,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绝编,沒想到半個月后僻澎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體貌踏,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年窟勃,在試婚紗的時候發(fā)現(xiàn)自己被綠了祖乳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡秉氧,死狀恐怖眷昆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汁咏,我是刑警寧澤亚斋,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站攘滩,受9級特大地震影響帅刊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漂问,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一厚掷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧级解,春花似錦冒黑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芒划,卻和暖如春冬竟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背民逼。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工泵殴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拼苍。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓笑诅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疮鲫。 傳聞我的和親對象是個殘疾皇子吆你,可洞房花燭夜當晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容

  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1俊犯、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,070評論 1 19
  • Ubuntu的發(fā)音 Ubuntu立莉,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音七问。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,211評論 9 467
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理桃序,服務(wù)發(fā)現(xiàn),斷路器烂瘫,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,374評論 0 5
  • 1媒熊、肯定的言詞 我們常犯的最大的錯誤就是,對親近的人講最嚴厲的話坟比。適當?shù)脑谘哉Z上多給對方贊美和肯定芦鳍,感謝對方的付出...
    小螃謝閱讀 210評論 0 1