您当前的位置:首页 > 计算机 > 编程开发 > Shell

Shell 输入/输出的重定向含义(>、>>、2>、2>>、&>、&>>、1>&2、2>&1)

时间:02-23来源:作者:点击数:

一、简介

  • 这里以ls命令进行举例。
    $ ls
    
    image.png
  • 总结:
    一个>的是每次覆盖导出结果,两个>的是在文件尾部追加导出结果。
    >:导出成功结果,不支持导出失败结果。
    2>:导出失败结果,不支持导出成功结果。
    $>:支持导出上面两种结果,混合导出。
  • 如何区分是否导出成功?
    在屏幕上输出了就是导出失败,没有输出则导出成功。
    image.png

二、详细案例

  • >:将命令运行成功结果导出到指定文件,只能导出成功的结果,失败/错误的结果无法导出。
    $ ls > ls.txt
    
    image.png
    image.png
    测试失败结果:ls.txt里面是空的,导入失败。
    image.png
  • >>:将命令运行成功结果导出追加到指定文件尾部,只能导出成功的结果,失败/错误的结果无法导出。
    image.png
    image.png
  • 2>:将命令运行失败/错误结果导出到指定文件,只能导出失败/错误的信息,成功的结果无法导出。
    image.png
    image.png
    测试成功结果:ls.txt里面是空的,导入失败。
    image.png
  • 2>>:将命令运行失败/错误结果导出追加到指定文件尾部,只能导出失败/错误的信息,成功的结果无法导出,截图案例就不贴了。
  • &>:将命令运行成功/失败/错误结果导出到指定文件,支持任何状态的结果导出。
    image.png
    image.png

三、进阶用法

  • 组合使用,成功的导出到ls.txt,失败的导出到ls2.txt
    $ ls ls.txt dzm.txt > ls.txt 2> ls2.txt
    
  • 组合使用,成功的导出到ls.txt,失败的导出到ls.txt
    • 1>通常可以省略成>,有了这些认识才能理解1>&22>&1
    • 1>&2正确返回值传递给2输出通道&2表示2输出通道,如果此处错写成1>2, 就表示把1输出重定向到文件2中。
    • 2>&1错误返回值传递给1输出通道,同样&1表示1输出通道。
    $ ls ls.txt dzm.txt > ls.txt 2>&1
    
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门