Linux系统应用:globbing通配及IO重定向

globbing通配及IO重定向

globbing是什么?

Globbing is the process of using wildcard characters to request or evaluate sets of files with the same partial names or sets of characters. Users make the wildcard represent an unknown character or string to search for a wider set of filenames on a particular domain.

简单点说,globbing表示通配符,文件名通配(整体文件名匹配,而非部分)

	匹配模式:元字符
		*:匹配任意长度的任意字符
			pa*:以pa开头的任意文件!如:pa,pax,password,passwd
			*pa*:文件名当中任意位置只要包含pa的文件!如:apacd,cpasswd,abcpaxxx
			 *pa:文件名当中以pa结尾的文件!如:wordpa,passpa,shutpa
			  *p*a*:文件名当中任意位置出现p和a(p在a前):apba,pa,rzpszall
			  
		?:匹配任意单个字符
			pa?:以pa开头,任意一个字符结尾的文件!如:paa,pab,pac
			??pa:以pa结尾,前面只能出现任意两个字符的文件!如sspa,okpa,cspa
			p?a:以p开头,以a结尾,中间包含任意单个字符的文件!如:paa,pba,pca
			p?a?:p开头,p和a之间分别出现任意单个字符的文件!如paas,poak,poke
				
		[]:匹配指定范围内的任意单个字符
			有几种特殊格式:
				[a-z], [A-Z], [0-9], [a-z0-9]
				[[:upper:]]:所有大写字母
				[[:lower:]]:所有小写字母
				[[:alpha:]]:所有字母
				[[:digit:]]:所有数字
				[[:alnum:]]:所有的字母和数字
				[[:space:]]:所有空白字符
				[[:punct:]]:所有标点符号

				pa[0-9][0-9], 2[0-9][0-9]
		[^]:匹配指定范围外的任意单个字符
			[^[:upper:]]
			[^0-9]
			[^[:alnum:]]


    练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;
		ls -d /var/l?[[:lower:]]

	练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
		ls -d /etc/[0-9]*[^0-9]

	练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录;
		ls -d /etc/[^a-z][a-z]*

	练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/linux目录;
		cp -r /etc/m*[^0-9] /tmp/linux/

	练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;
		cp -r /usr/share/man/man[0-9] /tmp/man/

	练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下;
		cp -r /etc/[mnrp]*.conf /tmp/conf.d/

IO重定向及管道

在这里插入图片描述
程序:指令+数据
程序:IO

		可用于输入的设备:文件
			键盘设备、文件系统上的常规文件、网卡等;
		可用于输出的设备:文件
			显示器、文件系统上的常规文件、网卡等;

		程序的数据流有三种:
			输入的数据流;<-- 标准输入(stdin),键盘;
			输出的数据流:--> 标准输出(stdout),显示器;
			错误输出流:  --> 错误输出(stderr),显示器;

		fd: file descriptor,文件描述符
			标准输入:0
			标准输出:1
			错误输出:2

IO重定向:

		输出重定向:>
			特性:覆盖输出
		输出重定向:>>
			特性:追加输出

set -C:禁止覆盖输出重定向至已存在的文件;此时可使用强制覆盖输出:>|

set +C:关闭上述功能。

错误输出流重定向:2>, 2>>

		合并正常输出流和错误输出流:
			(1) &>, &>>
			(2) COMMAND > /path/to/somefile 2>&1
			    COMMAND >> /path/to/somefile 2>&1

			特殊设备:/dev/null

输入重定向:<

		tr命令:
			tr [OPTION]... SET1 [SET2]
				把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符

			用法1:
				tr SET1 SET2 < /PATH/FROM/SOMEFILE
			用法2:
				tr -d SET1 < /PATH/FROM/SOMEFILE
				-d:删除指定的字符集内容

			注意:不修改原文件

Here Document:<<

			cat << EOF
			cat > /PATH/TO/SOMEFILE << EOF
            
            cat > /tmp/cat.out << END
            hello,world
            what is your name?
            >>END

		管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
			COMMAND1 | COMMAND2 | COMMAND3 | ...
			例:who | head -2 | tr 'a-z' 'A-Z' | tr -d '0-9'

			tee命令:
			    tee命令的主要功能是显示命令的输出并将其保存到一个文件中
				COMMAND | tee /PATH/TO/SOMEFILE
				例:cat /etc/passwd | tee /tmp.pass.out | tr 'a-z' 'A-Z'

		练习1:把/etc/passwd文件的前6行的信息转换为大写字符后输出;
			head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值