Bash特性之通配符及管道和輸出輸入重定向

1. Globbing:文件名通配符,簡稱爲glo;可以完成任意規則匹配的一類特殊字符;最經常使用的有如下三種:git

  *:匹配任意長度的任意字符或字符串;(某些特殊位置的"."字符不能匹配;)ide

  ?:匹配任意單個字符;(某些特殊位置的"."字符不能匹配;)spa

  []:匹配指定範圍內的任意單個字符,必須匹配且只能匹配一個字符;rest

  ^: 反相匹配符;字符串

 其餘的有:it

 指定範圍:class

  [0-9]:表示全部單個的十進制數字;file

  [a-z]:a,A,b,B,c,C,...,x,X,y,Y,zrequest

  [A-Z]:A,b,B,c,C,...,x,X,y,Y,z,Ztools

  [:lower:]:全部的小寫字母

  [:upper:]:全部的大寫字母

  [:alpha:]:全部字母,包括大小寫;

  [:digit:]:全部單個的十進制數字;

  [:alnum:]:全部的字母和十進制數字;

  [:punct:]:全部的符號;

  [:space:]:表示空白字符,包括空格和製表符

2.管道:符號爲 |

  管道一般是用來鏈接多個命令的;將管道符號前面的命令的執行的輸出結果經過管道傳遞給管道符號後面的命令,讓後面的命令將前面命令的輸出結果當成參數使用;

  命令爲:wc

   ~]#wc -c  file  顯示文件的字節數;

   ~]#wc -m  file  顯示文件中的有效字符的數量;

   ~]#wc -l  file  顯示文件的行數;

   ~]#wc -w  file  顯示文件中字的數量;

3.

   輸入重定向:

<

   輸出重定向:

>:覆蓋輸出重定向;

>>:追加輸出重定向;

   錯誤重定向:

2>:覆蓋錯誤重定向;

2>>:追加錯誤重定向;

   合併標準輸出和標準錯誤的重定向:

1.COMMAND {>|>>} /PATH/TO/SOMEFILE 2>&1

2.&>, &>>

相關練習:

一、顯示/etc目錄下,以字母開頭,後面跟了一個非字母及其它任意長度任意字符的文件或目錄;

  [root@localhost etc]# ls  [[:alpha:]][^[:alpha:]]*

  a153  b 12  k 67  m48d.conf  p12.conf


二、顯示/usr/share/man目錄下,全部以man開頭,後跟一個數字結尾的文件或目錄;

  [root@localhost ~]# ls -d /usr/share/man/man[0-9]

/usr/share/man/man1  /usr/share/man/man4  /usr/share/man/man7

/usr/share/man/man2  /usr/share/man/man5  /usr/share/man/man8

/usr/share/man/man3  /usr/share/man/man6  /usr/share/man/man9


三、複製/etc目錄下,因此p,m,r開頭的,且以.conf結尾的文件或目錄至/tmp/conf.d目錄下;

  [root@localhost etc]# cp [pmr]*.conf  /tmp/conf.d

  cp: 目標"/tmp/conf.d" 不是目錄  由於沒有目錄conf.d,因此這裏首先建立一個在tmp目錄下的一  個子目錄叫conf.d目錄

  [root@localhost ~]# mkdir /tmp/conf.d

  [root@localhost ~]# cp /etc/[rmp]*.conf /tmp/conf.d

  [root@localhost ~]# ls /tmp/conf.d

  mke2fs.conf                   pnm2ppa.conf      resolv.conf

  mtools.conf                   prelink.conf      rsyslog.conf

  pbm2ppa.conf                  readahead.conf

  pm-utils-hd-apm-restore.conf  request-key.conf


四、建立a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件,並按照下述要求寫出相應的命令;

  注意,以上文件是以逗號隔開的,其它符號都是文件名的組成部分;

  [root@localhost ~]# touch a123 cd6 c78m "c1 my"  m.z "k 67"  8yu 789


  1) 顯示全部以a或m開頭的文件;

  [root@localhost ~]# ls [am]*

  a123  anaconda-ks.cfg  a.txt  m.z


  2) 顯示全部文件名中包含了數字的文件;

  [root@localhost ~]# ls *[[:digit:]]*

  789  8yu  a123  c1 my  c78m  cd6  k 67


  3) 顯示全部以數字結尾且文件名中包含空白字符的文件;

   [root@localhost ~]# ls *[[:space:]]*[0-9]

    k 67


  4) 顯示文件名中不以c字母開頭而且不以數字結尾的全部文件;  

   [root@localhost ~]# ls -d  [^c]*[^0-9]

   8yu         etc           m.z    

   anaconda-ks.cfg  install.log         

   a.txt       install.log.syslog  

相關文章
相關標籤/搜索