首页 > 代码库 > Linux上的IO重定向及管道-&> &>> 2> 2>> 2>&1 2>>&1 | tee tr

Linux上的IO重定向及管道-&> &>> 2> 2>> 2>&1 2>>&1 | tee tr

IO重定向:

    输出重定向:>

    特性:覆盖输出

    输出重定向:>>

    特性:追加输出  

# set -C

    禁止覆盖输出重定向至已存在的文件;

    此时可使用强制覆盖输出:>|

# set +C

    关闭上述特性

错误输出流重定向:2>, 2>>  只会将错误的信息输出到指定的地方

    合并正常输出流和错误输出流:

    (1) &>, &>>

    (2) COMMAND > /path/to/somefile 2>&1

        COMMAND >> /path/to/somefile 2>&1

[root@app1 tmp]# ech "next" > a.txt 
-bash: ech: command not found
[root@app1 tmp]# ech "next" > a.txt 2>&1
[root@app1 tmp]# ech "next" &> a.txt 
[root@app1 tmp]# ech "next" 2> a.txt

特殊设备:/dev/null,代表空

     COMMAND > /dev/null:代表所有的输出信息都不会显示,直接到/dev/null里面去

使用演示:

[root@app1 tmp]# echo "hello" > a.txt
[root@app1 tmp]# cat a.txt 
hello
[root@app1 tmp]# echo "next" >> a.txt
[root@app1 tmp]# cat a.txt 
hello
next
[root@app1 tmp]# ech "next" > a.txt 
-bash: ech: command not found
[root@app1 tmp]# cat a.txt 
[root@app1 tmp]# ech "next" 2> a.txt 
[root@app1 tmp]# cat a.txt 
-bash: ech: command not found
[root@app1 tmp]# ech "next" &>> a.txt 
[root@app1 tmp]# cat a.txt 
-bash: ech: command not found
-bash: ech: command not found
[root@app1 tmp]# ech "next" > /dev/null 
-bash: ech: command not found
[root@app1 tmp]# ech "next" &> /dev/null


输入重定向:

    输入重定向:<

    特性:覆盖输入

    输入重定向:<<

    特性:追加输

使用演示:

1、
[root@app1 tmp]# cat << EOF >a.txt
> I
> wish
> nothing
> but 
> the 
> best
> for
> you
> !
> EOF
[root@app1 tmp]# cat a.txt 
I
wish
nothing
but 
the 
best
for
you
!
2、
[root@app1 tmp]# cat > a.txt << EOF
> l
> o
> v
> e
> EOF
[root@app1 tmp]# cat a.txt 
l
o
v
e


tr命令:

    tr [OPTION]... SET1 [SET2]

    把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符   

    用法1:

tr SET1 SET2 < /PATH/FROM/SOMEFILE

    用法2:

tr -d SET1 < /PATH/FROM/SOMEFILE

    注意:不修改原文件,只显示出来

[root@app1 tmp]# tr -d o < a.txt 
l

v
e
[root@app1 tmp]# cat a.txt 
l
o
v
e
[root@app1 tmp]# tr "a-z" "A-Z" < a.txt 
L
O
V
E


管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流

COMMAND1 | COMMAND2 | COMMAND3 | ...

把/etc/passwd文件的前6行的信息转换为大写字符后输出;
[root@app1 tmp]# head -n 6 /etc/passwd | tr ‘a-z‘ ‘A-Z‘
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC

tee命令:将前一个命令的执行结果通过管道覆盖到一个文件中

[root@app1 tmp]# cat a.txt | tee b.txt
l
o
v
e
[root@app1 tmp]# cat b.txt 
l
o
v
e




本文出自 “汪立明” 博客,请务必保留此出处http://afterdawn.blog.51cto.com/7503144/1855782

Linux上的IO重定向及管道-&> &>> 2> 2>> 2>&1 2>>&1 | tee tr