首页 > 代码库 > Shell--数据流重定向

Shell--数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方

标准

1、标准输入(stdin:代码为0,使用<<<

2、标准输出(stdout:代码为1.,使用>>>

3、标准错误输出(stderr:代码为2,使用2>2>>

Standard output standard error output

简单地说,标准输出值的是命令执行所回传的正确的信息,而标准错误输出可以理解为命令执行失败后,所回传的错误信息

范例:

正确与错误数据写入两个不同的文件中

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# find /home -name .bashrc > list_right 2> list_error

正确与错误数据写入同一个文件中

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# find /home -name .bashrc > list 2>&1

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# find /home -name .bashrc &> list

 

/dev/null垃圾桶黑洞设备与特殊写法

如果我们知道错误信息会发生,所以要将错误信息忽略掉而不显示或存储呢?这个时候黑洞设备/dev/null就很重要了,这个/dev/null可以吃掉任何导向这个设备的信息

范例:

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# find /home -name .bashrc 2> /dev/null

 

Standard input:<<<

以最简单的说法来说,就是将原本需要有键盘输入的数据改有文件内容来替代,下面我们由cat命令操作来了解一下什么叫做键盘输入吧

范例:利用cat命令来创建一个文件的简单流程

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# cat > catfile

testing

cat file test

<==这里按下【ctrl+d来离开

下面用纯文本文件代替键盘输入

范例:

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# cat > catfile < ~/.bashrc

root@DESKTOP-J295FSF:/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时,该次输入就结束

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# cat > catfile << "eof"

> this is a test

> ok now stop

> eof

<==输入eof这个关键字,立刻就结束而不需要输入ctrl+d

root@DESKTOP-J295FSF:/mnt/c/Users/vivi# cat catfile

this is a test

ok now stop

<==只有这两行,不会存在关键字那一行

 

我们总结一下哪些情况需要使用命令输出重定向:

1、屏幕输出的信息很重要,而且我们需要将它存下来的时候

2、后台执行中的程序,不希望她干扰屏幕正常的输出结果时

3、一些系统的例行命令的可能已知错误信息时,想以2>/dev/null”将它丢掉时

4、错误信息与正确信息需要分别输出时

Shell--数据流重定向