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

前端之家收集整理的这篇文章主要介绍了Bash特性之通配符及管道和输出输入重定向前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. Globbing:文件通配符,简称为glo;能够完成任意规则匹配的一类特殊字符;最常用的有以下三种:

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

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

[]:匹配指定范围内的任意单个字符,必须匹配且只能匹配一个字符;

^: 反相匹配符;

其他的有:

指定范围:

[0-9]:表示所有单个的十进制数字;

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

[A-Z]:A,z,Z

[: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.&>,&>>

相关练习:

1、显示/etc目录下,以字母开头,后面跟了一个非字母及其它任意长度任意字符的文件或目录;

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

a153 b 12 k 67 m48d.conf p12.conf


2、显示/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


3、复制/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


4、创建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

猜你在找的Bash相关文章