Linux下默认有两种输出流:
1 - 标准输出流
2 - 标准错误输出流
Linux下一切皆文件,这里的1和2表示的就是输出设备文件的文件描述符。
默认情况下,无论是标准输出还是标准错误输出,都是输出到终端显示的。
但也可以通过重定向输出到其他地方,如文件。这就是输出重定向。
并且,这两种输出流可以被分别重定向。
下面举例:
假设文件file.txt在当前目录下并不存在,执行下面的命令:
ls file.txt 2>log.txt这样就将错误输出重定向到文件log.txt中。
ls file.txt 2>/dev/null这样就什么都看不到,将标准错误输出流重定向到/dev/null中,丢弃了。
ls file.txt >/dev/null只将标准输出重定向到/dev/null中,这样仍然可以在终端窗口看到错误输出。
注:>/dev/null 等同于 1>/dev/null,前面的1可省略。
Unix/linux/BSD 都有三个特别文件,分别 1)标准输入 即 STDIN , 在 /dev/stdin , 一般指键盘输入, shell里代号是 0 2) 标准输出 STDOUT, 在 /dev/stdout, 一般指终端(terminal), 就是显示器, shell里代号是 1 3) 标准错误 STDERR, 在 /dev/stderr 也是指终端(terminal), 不同的是, 错误信息送到这里 shell里代号是 2 摘自:YEYUANGEN的专栏Linux下默认有两种输出流:1 - 标准输出流
2 - 标准错误输出流
Linux下一切皆文件,这里的1和2表示的就是输出设备文件的文件描述符。
默认情况下,无论是标准输出还是标准错误输出,都是输出到终端显示的。
但也可以通过重定向输出到其他地方,如文件。这就是输出重定向。
并且,这两种输出流可以被分别重定向。
下面举例:
假设文件file.txt在当前目录下并不存在,执行下面的命令:
ls file.txt 2>log.txt
这样就将错误输出重定向到文件log.txt中。
ls file.txt 2>/dev/null
这样就什么都看不到,将标准错误输出流重定向到/dev/null中,丢弃了。
ls file.txt >/dev/null
只将标准输出重定向到/dev/null中,这样仍然可以在终端窗口看到错误输出。
注:>/dev/null 等同于 1>/dev/null,前面的1可省略。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)