glob通配符及IO重定向
回顾: bash基础特性:命令补全、路径补全、命令引用 文件或目录的复制、移动、删除
bash的基础特性:globbing:文件名通配
匹配模式:元字符
*:匹配任意长度的任意字符
pa*,*pa*,*pa,*p*a*
pa,paa,passwd
?:匹配任意单个字符
pa?,??pa,p?a,p?a?
pa,paa
[]:匹配指定范围内的任意单个字符
有几种特殊格式
【a-z】,【A-Z】,【0-9】,【a-z0-9】
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有字母和数字
[[:space:]]:空白字符
[[:punct:]]:所有标点符号
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]
练习1:显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录:
ls -d /var/1?[[:lower:]]
练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
IO重定向及管道
程序:指令+数据
可用于输入的设备:文件 键盘设备、文件系统上的常规文件、网卡等
可用于输出的设备:文件 显示器,文件系统上的常规文件、网卡等
程序的数据流有三种:
输入的数据流: <--标准输入(stdin),键盘;
输出的数据流: -->标准输出(stdout), 显示器;
错误输出流: -->错误输出(stderr),显示器
fd:file descriptor ,文件描述符
标准输入:0
标准输出:1
错误输出:2
IO重定向:
输出重定向: >
特性:覆盖输出
输出重定向: >>
特性:追加输出
#set -C
禁止覆盖输出重定向至已存在的文件
此时可使用强制覆盖输出:>
#set +C
关闭上述特性
错误输出流重定向:2>,2>>
合并正常输出流和错误输出流:
&>,&>>
COMMAND > /path/to/somefile 2&>1
COMMAND >> /path/to/somefile 2&>1
输入重定向:<
tr命令:
tr [OPTION]... SET1 [SET2]
把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2 出现的字符
用法1:
tr SET1 SET2 < /path/from/somefile
用法2:
tr -d SET1 < /path/from/somefile 删除
注意:不修改源文件
Here Document: <<
cat << EOF
cat > /path/to/somefile << EOF
管道:连接程序,实现将前一个命令的输出直接定向后一个程序当做输入
COMMAND1 | COMMAND2 | COMMAND3 ...
tee命令:
COMMAND | tee /PATH/TO/somefile 输出并给定向后一个程序
练习1:吧/etc/passwd文件的前六行的信息转换为大写字符后输出:
head -n 6 /etc/passwd | tr 'a-z' 'A-Z'