Linux中数据流重定向的意思是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方,例如文件或设备之类。
数据流重定向运用的场景:
1)屏幕输出信息很重要,而且我们需要将其存下时
2)后台执行中的程序,不希望它打搅屏幕正常的输出结果时
3)一些系统的例行工作,希望它可以存下来时
4)一些执行命令的可能已知错误信息,想以“2> /dev/null"将其丢弃时
5)错误信息与正确信息需要分别执行时
在linux的shell中,输入输出分为3部分:
- 标准输入(stdin):代码为0,使用<或<<
- 标准输出(stdout):代码为1,使用>或>>
- 标准错误输出(stderr):代码为2,使用2>或2>>
标准输出(stdout):
这个比较容易懂,
- 1> 或者 > -------- 覆盖的方法将正确的数据输出到指定的文件或设备上。
- 1>>或者>> ------ 累加的方法...
比如:cat file1 > file2
标准错误输出(stderr):
类似的:
- 2> ------- 覆盖的方法...
- 2>> ------累加的方法...
比如 cat file1 > file2 2> file3
特殊情况:
- 将错误信息扔掉不要 cat file1 > file2 2> /dev/null
- 将标准输出和错误输出到一个文件里面 cat file1 2>&1 file2
标准输入(stdin):
< ------- 将原本需要由键盘输入的数据改由文件内容来替代
比如:
cat > catfile < ~/.bashrc
这个时候,~/.bashrc的内容就被定向到catfile。使用~/.bashrc代替了键盘输入。
<< ------ 代表的是结束输入的意思。
比如:cat > catfile << "eof"
>This is a test
>OK now stop
>eof -------------输入这个关键字,立刻就结束而不需要输入[ctrl]+d.