您的位置:新葡亰496net > 电脑系统 > 输出重定向

输出重定向

发布时间:2019-12-01 03:18编辑:电脑系统浏览(147)

    输出重定向

    大超级多 UNIX 系统命令从您的顶峰接收输入并将所发生的输出发送回​​到你的极限。命令经常从正式输入的地点读取输入,暗许是极端。标准输出,暗中同意情况下是终极。

    重定向日常通过在指令间插入特定的符号来兑现。非常的,那几个标识的语法如下所示

    重定向命令列表如下:

    command1 >file1
    
    命令 说明
    command > file 将输出重定向到 file。
    command < file 将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file 将文件描述符为 n 的文件重定向到 file。
    n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m 将输出文件 m 和 n 合并。
    n <& m 将输入文件 m 和 n 合并。
    << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    地点那一个命令推行command1然后将出口的原委存入file1。

    急需注意的是文件呈报符 0 平日是标准输入(STDIN),1 是规范输出(STDOUT),2 是标准错误输出(STDEWrangler揽胜)。

    在乎任何file1内的早就存在的故事情节将被新剧情代替。假使要将新内容增添在文件末尾,请使用>>操作符。


     


    实例

    输入重定向

    实行上面包车型大巴 who 命令,它将指令的风姿罗曼蒂克体化的出口重定向在客户文件中(users卡塔尔(英语:State of Qatar)

    实例

    随时以上实例,大家需求总括 users 文件的行数: $ wc -l users

           2 users
    

    也得以将输入重定向到 users 文件:$ wc -l < users

           2
    

    专一:上面四个例子的结果差异:第叁个例证,会输出文件名;第叁个不会

    command1 < infile > outfile 同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中。
    
    who >users
    

    重定向深入讲授

    貌似情状下,每种 Unix/Linux 命令运营时都会展开多少个文本:

    • 正式输入文件(stdin卡塔尔:stdin的文书陈诉符为0,Unix程序暗中认可从stdin读取数据。
    • 业内输出文件(stdout卡塔尔(英语:State of Qatar):stdout 的文本陈诉符为1,Unix程序私下认可向stdout输出数据。
    • 专门的职业错误文件(stderr卡塔尔(قطر‎:stderr的文本陈述符为2,Unix程序会向stderr流中写入错误新闻。

    新葡亰496net,将 stdout 和 stderr 合併后重定向到 file:  $ command > file 2>&1
    command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2: $ command < file1 >file2


    举行后,并不以前在尖峰输出新闻,那是因为出口已被从暗许的专门的学问输出设备(终端)重定向到钦赐的文件。

    Here Document

    Shell 中的生机勃勃种特殊的重定向格局,用来将输入重定向到壹人机联作式 Shell 脚本或程序。将七个 delimiter 之间的内容(document卡塔尔(英语:State of Qatar) 作为输入传递给 command。

    command << delimiter
        document
    delimiter
    

    小心:结尾的delimiter 一定要顶格写,前后无法有其余字符,包蕴空格和 tab 缩进。开首的delimiter前后的空格会被忽视掉。

    你能够应用 cat 命令查看文件内容

    实例

    在指令行中通过 wc -l 命令计算 Here Document 的行数:

    $ wc -l << EOF
        欢迎来到
        菜鸟教程
        www.runoob.com
    EOF
    3          # 输出结果为 3 行
    $
    

    咱俩也足以将 Here Document 用在本子中,比如:

    #!/bin/bash
    cat << EOF
    欢迎来到
    菜鸟教程
    www.runoob.com
    EOF
    

    举行以上脚本,输出结果:

    欢迎来到
    菜鸟教程
    www.runoob.com
    

    cat users
    h tty7 2017-08-10 11:48 (:0)
    

    /dev/null 文件

    只要期待实行有些命令,但不指望在荧屏上体现输出结果,写入到它的剧情都会被废弃:

    $ command > /dev/null
    

     /dev/null 文件充裕有用,将指令的出口重定向到它,会起到"制止出口"的职能。

    如果期待屏蔽 stdout 和 stderr,能够这么写:$ command > /dev/null 2>&1

    输入重定向

    和输出重定向相近,Unix 命令也能够从文件获取输入,语法为

    command1 <file1
    

    那样,本来必要从键盘获取输入的命令会转移到文件读取内容

    留神:输出重定向是超乎号(>卡塔尔,输入重定向是稍差于号(<卡塔尔(英语:State of Qatar)

     

    实例

    随着以上实例,咱们必要总计 users 文件的行数,施行以下命令

    $ wc -l users
    1 users
    

    wc(Word Count卡塔尔国命令的意义为总结内定文件中的字节数、字数、行数,并将总括结果显示输出:-l 总结行数

    也足以将输入重定向到 users 文件

    $  wc -l <users
    1 
    

    细心:上面七个例证的结果不一样:第二个例子,会输出文件名;第二个不会,因为它独有知道从业内输入读取内容。

    command1 <infile >outfile
    

    并且替换输入和输出,执行command1,从文件infile读取内容,然后将出口写入到outfile中。

    重定向深远解说

    平日意况下,每一个 Unix/Linux 命令运维时都会张开四个公文:

    • 标准输入文件(stdin卡塔尔:stdin的文本陈述符为0,Unix程序暗中认可从stdin读取数据
    • 正规输出文件(stdout卡塔尔:stdout 的公文陈说符为1,Unix程序暗许向stdout输出数据
    • 专门的学业错误文件(stderr卡塔尔(英语:State of Qatar):stderr的公文汇报符 为2,Unix程序会向stderr流中写入错误音讯

    暗中同意景况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。

    假使希望 stderr 重定向到 file,能够这么写:

    command 2 >file
    

    假准时待 stderr 追加到 file 文件末尾,能够这么写:

    command 2 >>file
    

    2 表示行业内部错误文件(stderr卡塔尔国。

    输出重定向。风华正茂经愿意将 stdout 和 stderr 归总后重定向到 file,能够如此写:

    $ command >file 2>&1
    # 或者
    $ command >>file 2>&1
    # & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
    

    要是期望对 stdin 和 stdout 都重定向,能够如此写:

    command <file1 >file2
    

    command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2

    Here Document

    输出重定向。Here Document 是 Shell 中的大器晚成种非常的重定向方式,用来将输入重定向到多个人机联作式 Shell 脚本或程序。

    它的核心方式如下:

    command <<delimiter
        document
    delimiter
    

    它的功能是将八个 delimiter 之间的剧情(document卡塔尔(قطر‎ 作为输入传递给 command。

    注意:

    最终的delimiter 必定要顶格写,后面无法有任何字符,前边也不能够有别的字符,包蕴空格和 tab 缩进。开首的delimiter前后的空格会被忽视掉。

     

    实例

    在命令行中通过 wc -l 命令总计 Here Document 的行数:

    $ wc -l <<EOF
        欢迎来到
        弗雷塞斯
        www.cnblogs.com/freescience
    EOF
    3  # 输出结果为 3 行
    

    咱俩也能够将 Here Document 用在剧本中,举例:

    #!/bin/bash
    cat <<EOF
    欢迎来到
    弗雷塞斯
    www.cnblogs.com/freescience
    EOF
    

    施行以上脚本,输出结果:

    迎接来到

    弗雷塞斯

    www.cnblogs.com/freescience

    /dev/null 文件

    要是希望实行有个别命令,但又不期待在荧屏上海展览中心示输出结果,那么能够将出口重定向到 /dev/null:

    command >/dev/null
    

    /dev/null 是二个新鲜的文书,写入到它的从头到尾的经过都会被撇下;借使尝试从该文件读取内容,那么什么样也读不到。不过/dev/null 文件丰硕有用,将下令的输出重定向到它,会起到"禁绝出口"的作用。

    倘诺期待屏蔽 stdout 和 stderr,能够这么写:

    command >/dev/null 2>&1
    

    留神:0 是正式输入(STDIN),1 是正经输出(STDOUT),2 是正统错误输出(STDEHaval中华V)

    本文由新葡亰496net发布于电脑系统,转载请注明出处:输出重定向

    关键词: