zoukankan      html  css  js  c++  java
  • 一些不知道的“重定向”

    如果说输入重定向和输出重定向,比较容易理解。

    那我们今天测试一些不常见的情况,发现很多细节,是书上没有的。

     

    一、我们直奔主题,看下面的四步。

    1. 该目录下只有一个文件。

    2. 输入cat 命令后,可以在终端输入,不过马上又有输出,最后两行df2 df2 更好说明。按Ctrl+C退出。

    3. 可以将上述操作重定向到1.text文件中,发现不会有两行相同的了! 

    4.显示上述操作结果,已经写在1.text文件中了。

    理论依据: 如果cat后面没有跟文件名的话,那它的作用就是将标准输入(比如键盘)回显到标准输出(比如屏幕)上。

     

    二、 上面的第四步换种方式:

    理论依据:command filename    以filename文件作为标准输入;

    command 0filename 同上;(但是command 0 filename0和<符号中间出现空格就会出错,如下面截图)

    我们使用<对输入做重定向,如果符号左边没有写值,那么默认就是0

    三、测试 << 符号,在输出重定向>>中是累加文件结尾处。那输入呢?

     当我们输入完cat >out <<123,然后敲下回车之后,命令并没有结束,此时cat命令像一开始一样,等待你给它输入数据。然后当我们敲入123之后,cat命令就结束了。123之前输入的字符都已经被写入到了out文件中。这就是输入分割符的作用。

    理论依据:command <<delimiter   从标准输入中读入,直到遇到delimiter分隔符。

    如果重复这个步骤,因为已经有了分隔符,直接回车就可以退出!如果你再输入其他的,反而提示错误。

     

     文件里面有分隔符123,但是不能显示出来!

    四、再来测试输出重定向。一些特别的情况。

    1.显示不存在的文件

    2. 将标准错误输出到err文件中,错误提示不再输出屏幕

    3.查看err文件内容,为错误提示

    4.将ls命令的标准输出重定向到12test文件中,标准错误重定向到err文件中。 这句是这里的核心,两个重定向!

    所以就没有任何提示了。正确的和错误的都有重定向,所以看5.6步。

    五、解析“>/dev/null 2>&1

    这是我们很常见的语句,开源库特别是脚本里面。

    1. >/dev/null

    这条命令的作用是将标准输出1重定向到/dev/null。 /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

    2. 2>&1

    这条命令用到了重定向绑定,采用&可以将两个标准文件绑定在一起。这条命令的作用是标准错误将和标准输出同用一个文件描述符,就是标准错误2重定向到标准输出1

    linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后标准错误由于重用了标准输出的描述符,所以标准错误也被定向到了/dev/null中,标准错误同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中

    六、解析“2>&1 >/dev/null

    1. 2>&1

    将标准错误绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以标准错误会输出到屏幕
    2. >/dev/null

    标准输出1重定向到/dev/null中。

    我们用一个表格来更好地说明这两条命令的区别:

    命令标准输出错误输出
    >/dev/null 2>&1 丢弃 丢弃
    2>&1 >/dev/null 丢弃 屏幕

    参考:

    https://blog.csdn.net/wade1010/article/details/79415640

  • 相关阅读:
    2017微软秋招A题
    UVA 494 Kindergarten Counting Game
    loss function与cost function
    coderforces 721b
    coderforces719b
    PyQt4打包exe文件
    PyQt4 UI设计和调用 使用eric6
    PyQt4 进度条和日历 代码
    PyQt4 颜色选择,字体选择代码
    PyQt4调用UI文件
  • 原文地址:https://www.cnblogs.com/orange-CC/p/13181086.html
Copyright © 2011-2022 走看看