重定向,/dev/null, 1>, 2>什么意思?
程序员文章站
2022-07-10 10:59:28
文件描述符我们常见的就是系统预留的0,1和2这三个,他们的意义分别有如下对应关系: 0 —— stdin(标准输入) 1 —— stdout (标准输出) 2 —— stderr (标准错误) 其中,shell编程里经常用到的就是描述符1,和描述符2。 如:ls命令执行的时候,在标准输出 输出了结果 ......
文件描述符我们常见的就是系统预留的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$
推荐阅读
-
shell 1>&2 2>&1 &>filename重定向的含义和区别
-
LINUX命令后面常见的>/DEV/NULL 和 2>&1 的含义解析
-
时空复杂度(时间复杂度/空间复杂度)O(1)、O(n)、O(n^2)、O(log n)、O(n log n)是什么意思
-
重定向,/dev/null, 1>, 2>什么意思?
-
Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
-
linux控制台输出到文件 - /dev/null与2>&1讲解
-
详解shell中>/dev/null 2>&1到底是什么
-
文理不分科3+1+2什么意思?新高考高中不分文理科怎么选科目?
-
cmd命令的重定向输出 2>&1详解
-
shell中1小于/dev/null 2大于&1的含义