zoukankan      html  css  js  c++  java
  • 重定向,/dev/null, 1>, 2>什么意思?

    文件描述符我们常见的就是系统预留的0,1和2这三个,他们的意义分别有如下对应关系:

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

    其中,shell编程里经常用到的就是描述符1,和描述符2。

    如:ls命令执行的时候,在标准输出 输出了结果,我们可以通过重定向符号,把标准输出的结果重定向到文件。

    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu@dev:~/linux/std_err_out$ touch ghostwu.txt
    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu.txt
    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu.txt
    ghostwu@dev:~/linux/std_err_out$ ls > std_out.txt
    ghostwu@dev:~/linux/std_err_out$ cat std_out.txt 
    ghostwu.txt
    std_out.txt
    ghostwu@dev:~/linux/std_err_out$ ls 1> std_out1.txt
    ghostwu@dev:~/linux/std_err_out$ cat std_out1.txt 
    ghostwu.txt
    std_out1.txt
    std_out.txt

    > 和 1>是等价的,都表示标准输出重定向。

    错误重定向:

    什么时候会产生错误重定向?比如,最简单,不存在某文件

    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu.txt  std_out1.txt  std_out.txt
    ghostwu@dev:~/linux/std_err_out$ ls std_err.txt
    ls: cannot access 'std_err.txt': No such file or directory

    我们可以把错误信息,通过错误重定向写入文件。

    ghostwu@dev:~/linux/std_err_out$ ls std_error.txt
    ls: cannot access 'std_error.txt': No such file or directory
    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu.txt  std_out1.txt  std_out.txt
    ghostwu@dev:~/linux/std_err_out$ ls std_error.txt 2> output_error.txt
    ghostwu@dev:~/linux/std_err_out$ cat output_error.txt 
    ls: cannot access 'std_error.txt': No such file or directory
    ghostwu@dev:~/linux/std_err_out$ 

     2>&1,&1的含义就可以理解为用标准输出的引用

    2>表示错误输出,&等价于标准输出

    ghostwu@dev:~/linux/std_err_out$ ls a.txt 2>&1
    ls: cannot access 'a.txt': No such file or directory
    ghostwu@dev:~/linux/std_err_out$ ls
    ghostwu.txt  output_error.txt  std_out1.txt  std_out.txt

    2>/dev/null意思就是把错误输出到“黑洞” 

    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
    ls: cannot access 'ghostwu.txt': No such file or directory
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>/dev/null
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>/dev/null
    ghostwu@dev:~/linux/shell/pipe$ 

    >/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞” 

    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
    ghostwu.txt
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null
    ls: cannot access 'ghostwu2.txt': No such file or directory
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null 2>&1
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null 2>&1
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null 2>&1

    2>&1 >/dev/null意思就是把错误输出2重定向到标准输出1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕 

    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>&1>/dev/null
    ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt 2>&1>/dev/null
    ls: cannot access 'ghostwu2.txt': No such file or directory
    ghostwu@dev:~/linux/shell/pipe$
  • 相关阅读:
    第一次作业
    机器学习第一次个人作业
    第02组 Beta版本演示
    第02组 Beta冲刺(4/4)
    第02组 Beta冲刺(3/4)
    微信小程序信息会话列表删除功能
    微信小程序自定义弹窗组件
    微信小程序使用Echarts
    uni.showModal,uni.showToast使用
    Array filter() 方法
  • 原文地址:https://www.cnblogs.com/ghostwu/p/9108382.html
Copyright © 2011-2022 走看看