重定向和管道及tr tee命令
一、重定向
输入重定向,就是将命令的执行结果或者字符串覆盖或者追加到某一个文件中
命令:>(覆盖) >>(追加)
linux输出结果分三种:
标准输入0:键盘的输入
标准输出1:默认输出到终端窗口
错误输出2:默认输出到终端窗口
根据输出结果输出重定向到文件中:
> 覆盖正确输出结果重定向到文件
2> 覆盖错误输出结果重定向到文件
2>> 追加错误输出结果重定向到文件
&> 覆盖所有输出重定向到文件
&>> 追加所有输出重定向到文件
> file > &1 覆盖所有输出重定向到文件
合并多个程序重定向到文件中
(ls;pwd)> f1 多条命令重定向
>文件内容会被覆盖
set -C:禁止将内容覆盖已有文件,但可以追加强制覆盖:>|
set +C:允许覆盖
>>原有内容基础上,追加内容
输入重定向
命令:<
将文件中的内容传递给命令执行
cat < /etc/fstab
cat << EOF 通常卸载脚本中,执行脚本后在屏幕上显示出来,做提示使用
A
B
C
EOF
二、管道
格式:Command1 | Command2 |.....
管道:将第一条命令的执行结果当做参数传递给第二个命令使用
cat /etc/fstab | mail -s hello tom
mail -s hello tom < /etc/fstab
Command1 | Command2:
如果Command1能够正确执行,则能将结果传递给Command2,如果错误则不能执行
[root@localhost ~]# xecho abcdef | tr -t 'abcde' '11'
bash: xecho: 未找到命令...
相似命令是: 'echo'
如果想将错误的命令也传递给Command2,可采取的方法:
Command1 2>&1 |Command2
Command1 |& Command2
[root@localhost ~]# xecho asdfasdf 2>&1 |tr "a-z" 'A-Z'
BASH: XECHO: 未找到命令...
相似命令是: 'ECHO'
三、tr命令
选项:
-d info:删除匹配到info的信息
[root@localhost ~]# echo abcdefg | tr -d abc
defg
-c info:补集,除了info之外的
[root@localhost ~]# echo abcdefg | tr -cd abc
abc[root@localhost ~]#
-s info:将重复info的去掉,保留一个
[root@localhost ~]# echo aabbbcc | tr -s ab
abcc
'A-Z' 'a-z': 将所有大写字符转换成小写
[root@localhost ~]# echo aabbbcc | tr 'a-z' 'A-Z'
AABBBCC
-t info1 info2: 按位匹配替换,没有匹配到的位不替换
[root@localhost ~]# echo abcdef | tr -t 'abcde' '11'
11cdef
info1 info2: 将info1中信息全部匹配替换,配有匹配到的用info2的最后一位填满
[root@localhost ~]# echo abcdef | tr 'abcde' '11'
11111f
四、tee命令
将上一级的管道传递古来的信息,保存到文件中,并在屏幕伤显示出来。
ls | tee /testdir/ls.log | tr 'a-z' 'A-Z' > /tmp/who.out
默认是覆盖 -a 是追加