精华内容
下载资源
问答
  • 数据流重定向

    2018-10-28 09:48:38
    数据流重定向 /dev/null 使用cat创建文件,使用ctrl+D结束输入。 可以使用eof结束输入。 数据流重定向 命令执行的判断依据: ; , &&, | 一般假设判断式,command2 与 ...
    • 数据流重定向

    /dev/null

    使用cat创建文件,使用ctrl+D结束输入。

    可以使用eof结束输入。

    数据流重定向

      • 命令执行的判断依据: ; , &&, |

    一般假设判断式,command2 与 command3 会放置肯定可以执行成功的指令。

     

    展开全文
  • Linux :数据流重定向

    2019-06-11 00:18:58
    什么是数据流重定向?        一般来说,如果你要执行一个命令,这个命令可能会由文件读入数据,经过处理之后,再将数据输出到屏幕上。 标准输出与标准错误    &...

    什么是数据流重定向?

           一般来说,如果你要执行一个命令,这个命令可能会由文件读入数据,经过处理之后,再将数据输出到屏幕上。

    标准输出与标准错误
           简单地说,标准输出指的是命令执行所回传的正确的信息,而标准错误输出可以理解为命令执行失败后,所回传的错误信息。这两个命令默认都是输出到屏幕上来,所以屏幕当然是混乱的。那能不能通过某些机制将这两条数据分开呢?当然可以。这就是数据流重定向的功能。
           

    >与>>

    1>:以覆盖的方法将正确的数据输出到指定文文件或设备上。
    1>>:以累加的方法将正确的数据输出到指定文文件或设备上。
    2>:以覆盖的方法将错误的数据输出到指定文文件或设备上。
    2>>:以累加的方法将错误的数据输出到指定文文件或设备上。
    注意:“1>>”以及“2>>”之间是没有空格的。

    示例:将stdout和stderr分别存到不同的文件中去。

    find /home -name .bashrc >list_right  2>list_error
    

    命令执行完毕,正确的打印信息就会输出到List_right这个文件,而错误的打印信息就会输出到list_error这个文件中去了。
    注意:如果list_right不存在,系统会自动创建。
     

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

           想象一下,如果唔知道错误信息会发生,所以想要直接将错误信息丢弃掉呢?这个时候黑洞设备/dev/null就很重要了。它可以吃掉任何导向这个设备的信息。

    示例:将上述的例子修正一下。将错误的数据丢弃,屏幕上只显示正确的数据。

    find /home -name .bashrc 2> /dev/null
    

           再想象一下,如果我要将正确的和错误的信息都写入到一个文件中去呢?这时候就要采用特殊的写法了。
    示例:将命令的数据全部写入名为list的文件中

    find /home -name ./bashrc >list 2> list  //错误
    find /home -name ./bashrc >list 2>&1     //正确
    find /home -name ./bashrc &>list         //正确
    

           第一行错误的原因是:由于两条数据写入同一个文件,又没有使用特殊的语法,所以可能就会造成数据交叉写入,造成次序的混乱。一般比较习惯于第二种写法。
           

    <与<<

    简单的说法,就是将原本需要由键盘输入的数据改由文件内容而替代。
    在这里插入图片描述
    由于加入>在cat后,所以catfile会被主动创建,而内容就是键盘上输入这这些字母了。
    在这里插入图片描述
    那能不能用纯文本文件代替键盘的输入呢?
    在这里插入图片描述
    执行完上述命令,我们发现这两个文件大小几乎一模一样,几乎像是使用cp复制的一般。

    理解<之后,我们再来看一下<<的使用
    举例来讲,我们要用cat直接将输入的信息输入到catfile文件中去,并且在遇到“eof”的时候,表示输入结束。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    我们发现,最后输入的eof并没有输入到catfile文件中去,它只是代表着本次输入的结束。

    展开全文
  • Linux中的数据流重定向

    千次阅读 2015-04-25 19:19:27
    一、数据流重定向简介 什么是: 在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。 简单来说,标准输出指的是命令执行所...
    一、数据流重定向简介
    什么是:
    在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。

    简单来说,标准输出指的是命令执行所回传的正确信息,而标准错误输出指的是命令执行失败后,所回传的错误信息。这些信息默认是打印在屏幕上的。

    那么什么时数据流重定向呢?从字面上理解就是改变数据流的流向,使之流向指定的文件或设备。例如,把执行命令所回传的正确信息(标准输出信息)流向一个文件,而将所回传的错误信息(标准错误输出)流向别一个文件,并把这两个文件的信息保存下来,而在屏幕上不出现任何该命令执行所回传的信息。
    何时用:
    既然我们知道了数据流的重定向,那么什么时候要使用数据流重定向呢?数据流重定向一般应用于:
    1、屏幕输出的信息很重要,而且我们需要将它保存下来;
    2、后台执行中的程序,不希望它干扰屏幕正常的输出结果;
    3、一些系统的例行命令的执行结果,希望它能够保存下来;
    4、一些执行命令的可能已知出错信息时,想以“2>/dev/null”将它屏蔽掉;
    5、错误信息和正确信息需要分别输出;

    二、数据流重定向的实现

    1、数据流重写向的分类
    在Linux中利用shell实现数据流重定向是非常简单的,下面来介绍3种数据流的重定向。

    1)标准输入(stdin):代码为0,使用<或者<<
    2)标准输出(stdout):代码为1,使用>或者>>
    3)标准错误输出(stderr):代码为2,使用2>或者2>>


    看到这里,你可能还是很疑惑,那个代码有什么作用,<和<<有什么不同,>和>>又有什么不同?

    2、代码的作用

    那个代码是为了区分命令中所使用的不同的数据流而设定的,例如,0代码的就是标准输入。注意在默认情况下,>和>>分别表示1>和1>>,而<和<<分别表示0<和0<<。

    3、标准输出数据流重定向详解

    在说输入之前,我先跟大家说说输出吧,一般使用例子都能让人更容易明白一样东西是怎么样使用的。所以请看下面的例子,在当前目录下,已存在一个名为StreamTest.txt的文本件,我使用cat命令来进行测试,我们知道,cat命令会把文本文件中的内容输出到屏幕上来。请看下面的例子:

    我们可以看到直接使用cat命令,StreamTest.txt文件的内容直接打印在屏幕上。

    而第二条语句cat StreamTest.txt > outfile1使用了数据流重定向,那么这条语句是什么意思呢?它的意思就是把由cat命令所产生的直接输出到屏幕上的信息输出到文件outfile1中,并保存。而且你可以看到,原本应在屏幕上输出的信息并没有输出到屏幕上,因为它输出到了文件outfile1中。这样你就应该能理解为什么叫数据流重定向了吧。

    值得 注意的是,如果outfile1文件不存在于当前目录下,系统则会自动创建这个文件;如果这个文件已经存在于当前目录下,那么系统就会先把这个文件中的内容清空,然后再将数据写入到该文件,也就是说若以>输出到一个已存在的文件,则这个文件的内容将会被覆盖。

    那有没有什么方法能不让文件内容被覆盖呢?当然就,那就是>>,这也就是>与>>的区别。其用法与>大同小异,如下图:

    同样的,使用这个命令,如果outfile2不存在于当前目录中,则系统会自动创建这个文件,而如果这个文件已经存在于当前目标下,则会把数据追加到该文件的末尾。所以在图中看到了两份重复的内容。

    注:因为在默认情况下,>和>>分别表示1>和1>>,所以在命令中没有用到1>和1>>,因为它们是等价的。

    4、标准错误输出数据流重定向详解
    标准错误输出的使用和标准输出的使用大同小异,在这里不再赘述,其使用如下:


    由于当前目标下不存在文件TestStream.txt,所以直接使用cat,则会在屏幕上输出错误提示,当然我们也可以用数据流重定向2>来把它输出到文件errfile中,而不是输出到屏幕上。因为>默认是代码1,所以这里需要写成2>,系统才知道这个是标准错误输入重定向,那现在你应该更深刻地理解到代码的作用了吧。而2>>也是追加的作用。

    通过上面的例子可以看到,我们可以利用数据流重定向把错误信息和正确信息分开。

    5、标准输入数据流重写向详解详解
    在标准输入中,<代表将原来需要由键盘输入的数据改由文件内容来替代,<<则代表结束输入。例如:
    利用cat来创建一个简单的文件catfile1,如下图所示:


    如果当前目录下不存在catfile1,则系统自动创建这个文件,并由键盘向这个文件写入内容;若文件已存在,则用输入的内容覆盖该文件中的内容。而标准输入重定向可以用文件的内容来替代键盘输入,其操作如下图所示:

    可以看到,它把catfile1的内容输入到catfile2中,代替先前的键盘输入。

    值得 注意的是,在标准输入重定向中<<并不表示追加,而是表示结束输入的意思,即作为一个结束符。请看如下的例子:

    之前的例子,都是使用ctrl+D来结束的,而这个例子,当你输入“eof”时,自动退出了,当然这个结束符,你可以自己定义。这对写程序是有一定的好处的。

    三、把正确信息与错误信息写入同一个文件中的方法
    上面的例子,都是把正确和错误的信息分别存储在不同的文件上的,那有没有办法把正确和错误的信息都储存在同一个文件中呢?当然有!请看下面的例子:


    注意:上面第三行的命令是错误的,虽然它看看起来非常直观。它的错误并不是因为语法之类的错误,也不是因为它不能执行,而是因为,有两条数据流同时写入一个文件,又没有特殊的语法,此时会导致两条数据流交叉地写入文件,造成次序的错乱,而不是屏幕上原来输出的排序,使文件的信息不可读。

    四、屏蔽所有信息的方法
    如果我有一定的目的,想把所有的错误信息或正确信息都屏蔽掉,可以怎么办呢?这时可以利用数据流重定向,使它流向一个设备——/dev/null,它就像一个黑洞一样,可以吃掉任何导向这个设备的信息。
    请看下面的例子:

    无论是正确的信息还是错误的信息,它都能吃掉。

    (转自:http://blog.csdn.net/ljianhui/article/details/9262737)

    展开全文
  • 2.标准输出重定向 3.标准输入重定向 4.标准错误重定向 5.重定向到/dev/null 6.创建文件描述符 7.关闭文件描述符 1. 标准输入、标准输出、标准错误 1)标准输入(stdin):代码为0,使用0<或0<<,其中代码0可以...
    目录
    1. 标准输入、标准输出、标准错误
    2.标准输出重定向
    3.标准输入重定向
    4.标准错误重定向
    5.重定向到/dev/null
    6.创建文件描述符
    7.关闭文件描述符

    1. 标准输入、标准输出、标准错误

    1)标准输入(stdin):代码为0,使用0<或0<<,其中代码0可以省略
    2)标准输出(stdout):代码为1,使用1>或1>>,其中代码1可以省略
    3)标准错误输出(stderr):代码为2,使用2>或2>>

    默认情况下>和>>分别表示1>或1>>,<和<<与0<和0<<等价。
    在这里插入图片描述
    文件描述符:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于 UNIX、Linux 这样的操作系统。

    2.标准输出重定向

    cat 命令是默认使用终端的标准输入作为命令的输入和标准输出作为命令的输出
    若参数为文本,则是将文件输出到标准输出即终端屏幕。
    在这里插入图片描述
    等价于

    cat file 1 > file2
    

    file 的内容是 hello world! 。把标准输出重定向到file2,若不存在file2,则新创建。

    >> 和 > 的区别就是:
    >> 是以追加的方式添加
    > 是清空原来的内容。
    

    3.标准输入重定向

    cat < file		//标准输入重定向为file文件
    等价于
    cat 0 < file
    

    在这里插入图片描述

    cat >file3 < file 	//标准输入重定向为file文件,标准输出重定向为file3文件
    

    在这里插入图片描述

    4.标准错误重定向

    ls -qw 2 > errorfile		//把标准错误信息重定向到errorfile文件
    
    //把标准输出和标准错误重定向到一个文件
    写法1, cmd > out_file 2>&1
    写法2, cmd &> out_file
    

    5.重定向到/dev/null

    在 Linux 中有一个被称为“黑洞”的设备文件,所有导入它的数据都将被“吞噬”。

    在类 UNIX 系统中,/dev/null,或称空设备,是一个特殊的设备文件,它通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成。读取它则会立即得到一个EOF。

    在这里插入图片描述
    将输出和错误输出都定向到/dev/null。

    6.创建文件描述符

    在 Shell 中有9个文件描述符。上面我们使用了也是它默认提供的0,1,2号文件描述符。另外我们还可以使用3-8的文件描述符,只是它们默认没有打开而已。你可以使用下面命令查看当前 Shell 进程中打开的文件描述符:

    cd /dev/fd
    ls -Al			//查看打开的文件描述符
    
    $ zsh
    $ exec 3>somefile
    # 先进入目录,再查看,否则你可能不能得到正确的结果,然后再回到上一次的目录
    $ cd /dev/fd/;ls -Al;cd -
    # 注意下面的命令>与&之间不应该有空格,如果有空格则会出错
    $ echo "this is test" >&3
    $ cat somefile
    $ exit
    

    在这里插入图片描述

    7.关闭文件描述符

    exec 3>&-			//关闭3号文件描述符
    
    展开全文
  • Liunx 常用操作高级篇数据流重定向sort 命令使用sed 命令简单使用awk 常用命令使用 数据流重定向 数据流重定向:当执行一个命令的时候,这个命令可能会由文件读入数据,经过处理之后,再将数据输出到屏幕上面,...
  • Linux 数据流重定向

    2018-07-14 20:29:29
    1.重定向:将原本输出到标准输出的数据重定向到一个文件中。 2.用于终端显示输出的特殊设备:   文件描述符 设备文件 说明 0 /dev/stdin 标准输入 1 /dev/stdout 标准输出 2 /dev/...
  • 在说明数据流重定向之前,需要先了解几个概念,即“标准输出(standard output)”和“标准错误输出(standard error output)”。 简单来说,标准输出是指命令执行后所回传的正确的信息,而标准错误输出为命令执行失败...
  • 数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方,例如文件或者是设备。如果我们想要将某些数据保存下来,就很有用了。我们什么时候需要呢?1、屏幕输出的内容很重要,而且我们需要将它...
  • Shell 数据流重定向

    2019-09-05 14:55:31
    数据流重定向: 将某个命令执行后应该要出现在屏幕上的数据,给它传输到其它地方去。 标准输入 代码0 < << 标准输出 代码1 > >> (>以覆盖的方法输出到文件或者设备)(>>以累加到方法输出...
  • 管道默认是连接前一个命令的...数据流重定向 挖坑待填 简单的重定向 标准错误重定向 使用tee命令同时重定向到多个文件 永久重定向 创建输出文件描述符 关闭文件描述符 完全屏蔽命令的输出 使用 xargs 分割参数列表 ...
  • 初窥Linux 之 数据流重定向

    万次阅读 多人点赞 2013-07-07 12:15:55
    一、什么是数据流重定向 在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。 简单来说,标准输出指的是命令执行所回传的正确...
  • 文章目录1 介绍2 数据流重定向2.1 简单的重定向2.2 标准错误重定向2.3 使用 tee 命令同时重定向到多个文件2.4 永久重定向2.5 创建输出文件描述符2.6 关闭文件描述符2.7 完全屏蔽命令的输出 1 介绍 内容 你可能对重...
  • 数据流重定向 很多时候,我们执行一些命令的时候,会在屏幕中得到这些命令的执行结果。这些叫作标准输出。 但是很多情况下,我们并不想将这些信息直接显示在屏幕上,这个时候,就得用重定向这个功能了 标准输入...
  • 数据流重定向 你可能对重定向这个概念感到些许陌生,但你应该在前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中。这其实就是重定向,将原本输出到标准输出的数据...
  • 前言:管理数据输入输出就是数据流重定向,由字面意思来看,好像就是将数据传导到其他地方去的样子?数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方,例如文件或者是设备(例如打印机之...
  • 关于数据流重定向

    2018-04-09 16:38:00
    一、什么是数据流重定向 要搞清楚数据流重定向,需要先搞清楚什么是数据流,然后如何重定向,这一切都需要从命令的执行过程说起。 如上图所示为命令的执行过程,可以看到,在Linux中,数据流分三种:标准输入...
  • 数据流重定向 基础概念: 华丽分割 stdin(输入) stdout(正确输出) stderr(错误输出) 对应数据值 0 1 2 可以将原本打到屏幕上的数据输出到指定的地方,比如可以将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,044
精华内容 42,017
关键字:

数据流重定向