美文网首页
Linux 重定向

Linux 重定向

作者: _于曼丽_ | 来源:发表于2020-10-13 08:21 被阅读0次
    • stdin 标准输入 0
    • stdout 标准输出 1
    • stderr 标准错误输出 2

    一个命令的输入有三种来源:

    • 键盘 << END
    • 文件 < (一些命令直接提供文件名作为输入源,则不需要 < 重定向输入源,例如 cat hello.txt)
    • 其他命令的输出 |

    一个命令的输出有三种去向:

    • 终端 (默认)
    • 文件 > >> 2> 2>> 2>&1
    • 其他命令的输入 |

    输入重定向:< <<

    < 将命令的输入重定向到文件内容,用于将输入源本应是键盘的命令的输入源重定向到文件内容

    # 效果与 cat note.txt 相同
    cat < note.txt
    

    << 将命令的输入重定向到键盘输入,用于将输入源本应是文件的命令的输入源重定向到键盘输入,也就是说用 << 结束符 替代文件名

    # 以逐行模式进行输入,回车键换行
    # 所有输入的行会在输入结束符 END 之后发送给 wc 命令
    # << 后面的是结束符号,不一定是 END,可以是任何符号
    [yumanli@punk web]$ wc -m << END
    > abc
    > END
    4
    

    标准输出重定向:> >>

    将 stdout 的输出结果不显示到终端上,重定向到指定位置

    > 覆盖

    # 将输出结果重定向到指定文件,如果文件不存在则新建文件,如果文件存在则覆盖原有文件
    cut -d , -f 1 note.csv > students.txt
    # 既不想输出到屏幕,又不想输出到文件,则重定向到 /dev/null,又称黑洞文件
    cut -d , -f 1 note.csv > /dev/null
    

    >> 追加

    # 将输出结果重定向到指定文件,如果文件不存在则新建文件,如果文件存在则追加到原有文件的末尾
    cut -d , -f 1 note.csv >> students.txt
    

    标准错误输出重定向:2> 2>>

    将 stderr 的输出结果不显示到终端上,重定向到指定位置

    2> 覆盖

    # 如果 not_exist_file.csv 文件存在,则将文件内容重定向到 result.txt 文件中
    # 如果 not_exist_file.csv 文件不存在,则将错误信息覆盖到 error.log 文件中
    cat not_exist_file.csv > result.txt 2> error.log
    # 以下结果与上面相同,2> 与 > 的顺序可以颠倒
    cat not_exist_file.csv 2> error.log > result.txt
    

    2>> 追加

    # 如果 not_exist_file.csv 文件存在,则将文件内容重定向到 result.txt 文件中
    # 如果 not_exist_file.csv 文件不存在,则将错误信息追加到 error.log 文件中
    cat not_exist_file.csv > result.txt 2>> error.log
    

    组合输出重定向:2>&1

    将 stderr 的输出结果重定向到与 stdout 相同的地方

    # 如果 not_exist_file.csv 文件存在,则将文件内容重定向到 result.txt 文件中
    # 如果 not_exist_file.csv 文件不存在,则将错误信息覆盖到 result.txt 文件中
    cat not_exist_file.csv > result.txt 2>&1
    # 如果 not_exist_file.csv 文件存在,则将文件内容追加到 result.txt 文件中
    # 如果 not_exist_file.csv 文件不存在,则将错误信息追加到 result.txt 文件中
    cat not_exist_file.csv >> result.txt 2>&1
    

    组合输入和输出重定向

    [yumanli@punk web]$ sort -n << END > result.txt 2>&1
    > 12
    > 7
    > 10
    > 56
    > 101
    > 95
    > 9
    > END
    [yumanli@punk web]$ cat result.txt
    7
    9
    10
    12
    56
    95
    101
    

    管道:|

    将多个命令连接起来执行,一个命令的输出作为另一个命令的输入,命令从左向右依次执行

    # du 命令的输出作为 sort -nr 命令的输入
    # sort -nr 命令的输出作为 head 命令的输入
    # head 命令的输出重定向到 result.txt 文件
    du | sort -nr | head > result.txt
    

    相关文章

      网友评论

          本文标题:Linux 重定向

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