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  

相关文章
相关标签/搜索