资料重倒向

标准输入和标准输出

Linux有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字编码为0,1,2.

STDIN是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将结果输出到终端;STDERR是标准错误,默认将输出结果输出到终端.

  • 标准输入(stdin): 代码为0,使用<或<<

  • 标准输出 (stdout):代码为1,使用>或>>

  • 标准错误输出(stderr):代码为2,使用2>或2>>

  • 1>: 以覆盖的方法将[正确的输出]输出到指定位置

  • 1>>: 以追加 方法将[正确的输出]输出到指定位置

  • 2>: 以覆盖的方法将[错误信息]输出到指定位置

  • 2>>:以追加的方法将[错误信息]输出到指定位置

    1
    2
    3
    4
    5
    6
    7
    8
    # 正常情况下一般身份的账号在/home下搜索
    [root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc
    #find: '/home/arod': Permission denied <== Standard error output
    #find: '/home/alex': Permission denied <== Standard error output
    #/home/dmtsai/.bashrc <== Standard output
    #将资料重定向
    [root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc > list_right 2>list_error
    #此时将无任何信息 因为正确的信息重定向到了list_right,错误的信息重定向到了list_error,不会显示在屏幕上

dev/null垃圾桶黑洞

1
2
3
4
5
6
7
8
#将错误信息输出到黑洞,即就是不存储
[root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc 2>/dev/null
#将所有资料存入list文档
#这个是个错误示例,由于两个资料同时写入文档,会造成次序错乱
[root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc >list 2>list
#写入同一个文档可以使用 2>&1 或者 &>
[root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc >list 2>&1
[root@izj6cd5mlh03qbmrwa801iz ~]# find /home -name .bashrc &>list