美文网首页Linux
shell重定向输出(1>&2 2>&

shell重定向输出(1>&2 2>&

作者: 安静1337 | 来源:发表于2016-07-01 16:49 被阅读1774次

    在shell程序中,最常用的文件描述符FD(file descriptor)大概有三个:

    0: 标准输入(stdin)
    1: 标准输出(stdout)
    2: 标准错误(stderr)

    example:
    如果当前目录下只有一个文件:a

    ls
    a #代表着1标准输出
    
    ls b
    ls ... No such file or directory #代表2错误输出
    
    ls a b 1>f.out 2>f.err #终端上什么都不会输出,相应的信息会被分别输出到f.out和f.err
    

    (ps: 1>f.out缩写:>f.out,通常1>省略成>)

    下面,认识下 1>&2 2>&1
    如果这样写:1>2,意味着将标准输出重定向到一个名叫2的文件中
    1>&2代表着将标准输出重定向到标准错误中

    ls a b 1>f.out 2>&1 #所有(标准输入/标准输出)信息都被输出到f.out
    ls a b 2>f.out 1>&2 #所有(标准输入/标准输出)信息都被输出到f.out
    

    但不能把顺序写反了

    ls a b 2>&1 1>f.out #标准错误被输出到终端,标准输出被输出到f.out
    

    所以,像1>&2中的&,可以理解成一个转义符

    总结:

    &是一个描述符,如果12前不加&,会被当成一个普通文件。
    >1> 的简写。
    1>&2 :标准输出重定向到标准错误。
    2>&1 :标准错误重定向到标准输出。
    &> file>& file 意思是把标准输出和标准错误输出都重定向到文件file中

    相关文章

      网友评论

        本文标题:shell重定向输出(1>&2 2>&

        本文链接:https://www.haomeiwen.com/subject/hgafjttx.html