书到用时方恨少,事非经过不知难。——陆游
如果你现在想在屏幕上只显示标准错误信息,而将标准输出重定向输出到一个叫output.std的文件中(在当前目录)。命令如下:这里的1就是标准输出的文件描述符,所以 1>output.std就是将标准输出重定向导出到文件output.std中,而且这个文件中原有的内容会被覆盖掉。
root@promote:~# find /etc -name passwd 1> output.std
root@promote:~# cat output.std
/etc/pam.d/passwd
/etc/cron.daily/passwd
/etc/passwd
其实,输出重定向符号左边的标准输出的文件描述符1是可以省略的,省略了这个文件描述符并不影响命令的结果,因为Linux系统默认的文件描述符就是1(标准输出)。
熟悉了将标准输出信息导出到文件之后,又想将标准错误信息导出到一个文件中。就是将上面例子的数字1改成2,命令如下:将find命令的错误信息导出到errors.std文件中,这里的2就是错误信息的文件描述符。
root@promote:~# find /etc -name passwd 2> errors.std
/etc/pam.d/passwd
/etc/cron.daily/passwd
/etc/passwd
root@promote:~# cat errors.std
接下来,我们使用一个命令将标准输出和标准错误信息同时导出到两个文件中,命令如下:同时将标准输出导出到文件output中,而将标准错误信息导出到文件errors中。
root@promote:~# find /etc -name passwd 2> errors 1> output
同样可以用cat命令检验。
现在,我们又想使用一个命令就将标准输出和标准错误信息同时导出到一个文件中而不是两个文件。命令如下:由于在第一个>的左边没有任何数字,所以使用默认的1,因此> output_errs也就是将标准输出导出到output_errs文件中。2>&1表示将2导出到1所指向的文件,也就是将标准错误信息也导出到1所指向的文件output_errs中。
root@promote:~# find /etc -name passwd > output_errs 2>&1
同样可以用cat命令检验。
能不能再简单点,在命令中只使用一个>.命令如下:将标准输出导出和标准错误信息同时导出到一个名为output_errs2的文件中。这里的&符号代表了所有的文件描述符号(包括了0、1和2)。所以&> output_errs2就是将所有的信息都导出到output_errs2文件中。
root@promote:~# find /etc -name passwd &> output_errs2
同样可以用cat命令检验,因为上述所有的命令系统执行完后都不会给出任何信息。
建议不要使用&>表示法,因为使用&>表示法可能会在文件中包含了一些不需要的信息。
今天就分享这么多了,谢谢欣赏!