codecamp

Bash 重定向

当一个命令执行时,通常从“标准输入”读取输入,在默认情况下,该“标准输入”为您的终端。以此类比,当一个命令将其输出写入到“标准输出”中,在默认情况下,该“标准输出”同为您的终端。重定向就是将发送目标:终端,更改成指定的文件。

输出重定向

由于>>>会将输出从终端重定向到指定文件,因此均不会在终端打印输出。>>>的功能区别,如下所示:

  1. >会以命令中的写入内容覆盖原文件内容。如果指定的文件不存在,那么它将会创建一个以指定文件名命名的新文件,并执行写入操作。

示例:

    #!/bin/bash


    writefile=WriteFile.txt


    $ echo "编程狮:www.w3cschool.cn" > $writefile


    #使用 cat 命令打印文件内容
    $ cat $writefile

执行后得到以下结果:

    编程狮:www.w3cschool.cn

  1. >>会将命令中的写入内容附加到原文件内容末尾。如果指定的文件不存在,那么它将会创建一个以指定文件名命名的新文件,并执行写入操作。

示例:

    #!/bin/bash


    writefile=WriteFile.txt


    $ echo "编程狮:www.w3cschool.cn" > $writefile


    $ echo "编程狮:www.w3cschool.cn" >> $writefile


    #使用 cat 命令打印文件内容
    cat $writefile

执行后得到以下结果:

    编程狮:www.w3cschool.cn
    编程狮:www.w3cschool.cn

输入重定向

与输出重定向一样,但是符号方向相反。语法展示如下:

command < file

接下来使用 wc命令读取文件行数配合演示示例。 示例:

$ wc -l < WriteFile.txt

注:
- 此处不会输出文件名, <仅知道从“标准输入”读取的内容。

深入理解

  1. 您需要理解以下三个文件概念:
    • stdin:标准输入文件,其文件描述符为0,默认由此读取数据。
    • stdout:标准输出文件,其文件描述符为1,默认向它输出数据。
    • stderr:标准错误文件,其文件描述符为2,默认向它写入错误信息。

    #默认情况下
    command > file
    #将 stdout 重定向到 file


    command < file
    #将 stdin 重定向到 file

  1. 如果想要 stderr重定向到 file ,如下示例:

    $ command 'stderr' > file
    #或(注意二者的区别)
    $ command 'stderr' >> file

注:
- 'stderr'指代标准错误文件,非命令,请不要盲目复制使用。

  1. 如果希望对stdinstdout都进行重定向,将 file1 作为command 的输入,并将 command 的处理结果输出到 flie2 。

    command < file1 > file2
Bash 读取文件
Bash 备忘录
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }