介绍
- 任何一个程序在Linux中运行,Linux系统都会为其创建3个已经打开的stream,分别用来输入(0:stdin),输出(1:stdout),打印诊断和错误信息(2:stderr)。通常他们会被连接到用户终端。这3个句柄的类型为指向FILE的指针。可以被fprintf、fread等函数使用,他们在程序开始启动后,stdin, stdout, and stderr 的文件描述符是 0, 1和2,其它的文件描述符则排在其后
- 从图中可以看到1代表标准输出,什么是标准输出?就是往屏幕上输出!
- 同样的0代表标准输入,就是键盘输入!
- 标准错误输出,就是往屏幕上显示错误信息!
- 0, 1 和 2 常与操作符一起用,表示输入重定向或输出重定向!
重定向 >
运行程序时,加上 "> 文件名",即可将代码中标准输出(stdout)的字符串输出到指定文件中。
//屏幕的输出重定向至t.log 文件
echo "hello" > t.log
echo "hello" 1> t.log
1 > t.log 等同于 > t.log
标准输出和标准错误输出分别指定到不同的文件中
[root@test]$ ls test >succ.log 2>err.log `test文件夹真实存在,产生标准日志`
[root@test]$ cat succ.log
a.txt
[root@test]$ ls xxx >succ.log 2>err.log `xxx文件夹不存在,产生错误日志`
[root@test]$ cat err.log
ls: cannot access xxx: No such file or directory `果然错误日志被重定向到err.txt`
标准输出和标准错误输出指定到同一个文件中
[root@test]$ ls test >my.log 2>my.log `test文件夹真实存在,产生标准日志`
[root@test]$ ls xxx >my.log 2>my.log `xxx文件夹不存在,产生错误日志`
2 > & 1
- 2 代表错误标准输出,1代表标准输出,“2>&1”是一种优化写法,表示把标准错误输出也输出到标准输入所指定的文件中
[root@test]$ ls test >my.log 2>& 1
[root@test]$ ls xxx >my.log 2>& 1
符号>&是一个整体,不可分开,">"表示重定向,但是为了避免把1当成普通文件1,通过>&1,表示指向一个对象1,对象1对应着前面的标准输出!
追加 >>
运行程序时,加上 ">> 文件名",即可将代码中标准输出(stdout)的字符串追加到指定文件末尾
标签:输出,log,标准,ls,linux,test,root,重定向 From: https://www.cnblogs.com/hasome/p/17993994