Shell--数据流重定向
Posted 微雷之末
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell--数据流重定向相关的知识,希望对你有一定的参考价值。
数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方
标准
1、标准输入(stdin):代码为0,使用<或<<
2、标准输出(stdout):代码为1.,使用>或>>
3、标准错误输出(stderr):代码为2,使用2>或2>>
Standard output 与 standard error output
简单地说,标准输出值的是命令执行所回传的正确的信息,而标准错误输出可以理解为命令执行失败后,所回传的错误信息
范例:
正确与错误数据写入两个不同的文件中
[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc > list_right 2> list_error
正确与错误数据写入同一个文件中
[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc > list 2>&1
[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc &> list
/dev/null垃圾桶黑洞设备与特殊写法
如果我们知道错误信息会发生,所以要将错误信息忽略掉而不显示或存储呢?这个时候黑洞设备/dev/null就很重要了,这个/dev/null可以吃掉任何导向这个设备的信息
范例:
[email protected]:/mnt/c/Users/vivi# find /home -name .bashrc 2> /dev/null
Standard input:<与<<
以最简单的说法来说,就是将原本需要有键盘输入的数据改有文件内容来替代,下面我们由cat命令操作来了解一下什么叫做键盘输入吧
范例:利用cat命令来创建一个文件的简单流程
[email protected]:/mnt/c/Users/vivi# cat > catfile
testing
cat file test
<==这里按下【ctrl】+d来离开
下面用纯文本文件代替键盘输入
范例:
[email protected]:/mnt/c/Users/vivi# cat > catfile < ~/.bashrc
[email protected]:/mnt/c/Users/vivi# ll catfile ~/.bashrc
-rwxrwxrwx 1 root root 3106 Jun 24 16:05 catfile*
-rw-r--r-- 1 root root 3106 Feb 20 2014 /root/.bashrc
理解<之后,我们来看看<<这个符号,它代表的是结束输入的意思,举例来说,我们要用cat直接将输入的信息输出到catfile中。且当由键盘输入eof时,该次输入就结束
[email protected]:/mnt/c/Users/vivi# cat > catfile << "eof"
> this is a test
> ok now stop
> eof
<==输入eof这个关键字,立刻就结束而不需要输入【ctrl】+d
[email protected]:/mnt/c/Users/vivi# cat catfile
this is a test
ok now stop
<==只有这两行,不会存在关键字那一行
我们总结一下哪些情况需要使用命令输出重定向:
1、屏幕输出的信息很重要,而且我们需要将它存下来的时候
2、后台执行中的程序,不希望她干扰屏幕正常的输出结果时
3、一些系统的例行命令的可能已知错误信息时,想以“2>/dev/null”将它丢掉时
4、错误信息与正确信息需要分别输出时
以上是关于Shell--数据流重定向的主要内容,如果未能解决你的问题,请参考以下文章
Linux之Shell编程(12)--Shell输入/输出重定向实例演示