输入/输出/重定向

什么是标准输出和错误输出?

比如我们现在有一个文件,我用ls -l查看它的创建时间、文件大小、权限等信息:

$ ls -l test
-rw-rw-rw- 1 yf yf 0 Jun  9 10:27 test #这一行就是标准输出信息

反之,如果我查看的是一个不存在的文件:

$ ls -l file
ls: cannot access 'file': No such file or directory #这一行就是错误输出,也就是我们常说的“报错”

什么是输出重定向?

输出重定向,就是上面执行代码后,屏幕上出现的文字存到一个文件里。这里有几种重定向的符号:

表格来源:《Linux就该这么学》正文第80页

比如把上面的屏幕输出存到一个文件里:

$ ls -l file.txt > logout.txt #重定向后,屏幕就不会再有输出了
$ cat logout.txt
-rw-rw-rw- 1 yf yf 0 Jun  9 10:27 file.txt

$ ls -l file2.txt 2> logout_error.txt #把错误输出存到一个文件里
$ cat logout_error.txt
ls: cannot access 'file2.txt': No such file or directory

在平时我们进行数据分析的时候,如果某个软件运行会产生大量的输出信息,而你又不想看见,你就可以用重定向把这些信息都存到一个文件里;另外,错误输出的重定向方便我们在程序运行错误的时候,查找是哪里出了问题。有的软件运行的时候,标准输出和错误输出全都混在一起,查错非常的不方便,用重定向这个方法可以明显的提高工作效率。

关于上面表格里最后一种用法:2>&1,这个命令是要写在最后的。
例如:command > logoutfile 2>&1
具体原因请看:linux shell 中"2>&1"含义

你可能感兴趣的:(输入/输出/重定向)