美文网首页
I/O重定向与 管道

I/O重定向与 管道

作者: xue2007 | 来源:发表于2018-05-23 08:36 被阅读0次

A、三种I/O设备

            标准输入(stdin)    -0  #默认接受来自键盘的输入

            标准输出(stdout)  -1 #默认输出到终端窗口

            错误输出(stderr)  -2 #默认输出到终端窗口

B、把I/O重定向至文件

        a、标准输出(stdout)和错误输出(stderr)可以重定向到文件,I/O重定向:指的是改变默认输入或输出。

        >    #把stdout重定向到文件          #1> 同 >  ;1>>  同 >>

        2>  #把stderr重定向到文件

        &>  #把所有输出重定向到文件

实例:

        】$ find /etc/ -name "*.conf"  >all.txt        #正确信息输出到all.txt文件

        】$ find /etc/ -name "*.conf"  >all.txt  2>&1

        】$ find /etc/ -name "*.conf"  &>all.txt       #所有信息(包含错误)到all.txt文件

        】$ find /etc/ -name "*.conf"  2> find.error  > find.correct

    b、文件内容是否会被覆盖参数

            set -C  #禁止将内容覆盖已有文件,但可以追加【>>】。 在这个模式下,使用 【 >| file 】是强制覆盖。

            set +C  #默认允许覆盖

实例:

        】# cat /etc/redhat-release >win1.txt

                - bash: win1.txt: cannot overwrite existing file #>报错

        】# cat /etc/redhat-release >>win1.txt  #>>正常输出到文件

        】# cat win1.txt

            CentOS Linux release 7.5.1804 (Core)

注释:

    > 若文件不存在,则创建,并将正确的输出填充,若文件已存在,则覆盖原内容

    >> 若文件不存在,则创建,并将正确的输出内容填充,若文件已存在,则追加内容

    2> 若文件不存在,则创建,并将错误的输出填充,若文件已存在,则覆盖原内容

    2>> 若文件不存在,则创建,并将错误的输出内容填充,若文件已存在,则追加内容

    &> 若文件不存在,则创建,并将所有的输出填充,若文件已存在,则覆盖原内容

    &>> 若文件不存在,则创建,并将所有的输出内容填充,若文件已存在,则追加内容

    >file 2>&1 若文件不存在,则创建,并将所有的输出填充,若文件已存在,则覆盖原内容

    /dev/null  #特殊设备【黑洞】,所有重定向到这里的信息都将丢失。

    c、重定向输入,可以从文件中导入(stdin),已可以多行发送给(stdin)

        1)、使用【<】来重定向标准输入

        2)、某些命令能够接受从文件中导入的STDIN

        tr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符

    实例:

            】cat > file

                mage

                wangxiaochun

        按ctrl+d离开,可以使用文件来代替键盘的输入

        3)、使用“<<终止词”命令从键盘把多行重导向给STDIN

实例:

       】 cat > /app/test.txt << EOF

        hello

        123

        nihao

        EOF

    C、管道 |

        管道(使用符号“|”表示)用来连接命令;  格式:命令1 | 命令2 | 命令3 | …

        “|” 管道只将正确结果传递给右边的命令用,STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现。

注释:

                2>&1 将错误结果转为正确结果 

                |& 将正确及错误都传递给右边命令用

                1>&2 将正确结果转为错误结果

实例:

                】$ find /etc/ -name "*.conf" |& wc -l

                】# ls /boot /error |& tr 'a-z' 'A-Z' #新方法在Centos5里不能使用

                】# ls /boot /error 2>&1 | tr 'a-z' 'A-Z'

  D、tr 转换和删除字符

           tr [OPTION]... SET1 [SET2]

                选项

                    -c    #取字符集的补集

                    -d    #删除所有属于第一个字符集的字符

                    -s     #替换连续重复的字符,并单独以一个字符表示。

                    -t     #将第一个字符集对应字符转化为第二个字符集对应的字符

实例:

        】ls | tr ‘a-z’ ‘A-Z’

            df | tr -s  ''   ''

            echo abcdef | tr -t 'abcd' 'xyz'

----------------------------------------------------------------------------------

练习:从1加到100,取和

[root@instructor_v7(nanyibo) ~]# echo {1..100} |tr " " + |bc

5050

[root@instructor_v7(nanyibo) ~]# echo {1..100} |tr [:blank:] + |bc

5050

----------------------------------------------------------------------------------

F、重定向到多个目标

命令1 | tee 文件名 | 命令

    选项:

            -a 追加

实例:

[root@centos7 app]# ls | tee -a ls.log      #标准输出(stdout),并把内容重定向到ls.log文件里。

        】ls.log

            passwd

            win1

[root@centos7 app]# enable |tee /app/456 |wc -l           #enable的内部命令输出到456里,并计算行数。

相关文章

  • linux管道及重定向

    一 .管道及重定向 I/O重定向 0, 1, and 2, known as standard input, st...

  • I/O重定向与 管道

    A、三种I/O设备 标准输入(stdin) -0 #默认接受来自键盘的输入 标准输出(stdout) -1 ...

  • IO重定向、管道及文本处理工具

    (1)bash的快捷键 (2)bash中的I/O重定向及管道

  • 5-标准I/O和管道

    本章内容 ◆ 三种I/O设备◆ 把I/O重定向至文件◆ 使用管道 标准输入和输出 把输出和错误重新定向到文件 把输...

  • I/O重定向详解

    一、I/O重定向基本概念 I/O重定向有三种定义打开文件:stdin (the keyboard), stdout...

  • Linux的I/O重定向和管道

    在Linux系统中一切皆文件,当打开一个文件时,Linux会自动分配一个称为文件描述符(file descript...

  • 06-1重定向

    本章将要探讨——I/O重定向 功能。I/O 是input/output的缩写。这个功能可以把命令行的输入 重定向为...

  • 标准I/O与管道

    1. Linux一共三种I/O设备: 标准输入---0(默认接收键盘)标准输出---1(默认输出到终端)标准错误-...

  • I\O重定向

    文件描述符 在我们开始学习重定向之前,我们先来了解一下文件描述符(fd:file descriptor)linux...

  • I/O重定向

    I/O重定向 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and...

网友评论

      本文标题:I/O重定向与 管道

      本文链接:https://www.haomeiwen.com/subject/lfvljftx.html