美文网首页Linux shell脚本编程
文件描述符和重定向

文件描述符和重定向

作者: lujg12 | 来源:发表于2018-04-21 17:16 被阅读0次

参考书籍 Linux shell 脚本攻略


文件描述符用来追踪已打开的文件,是与打开的文件或数据流相关的整数。最常见的文件描述符是stdin stdout stderr。文件描述符0/1/2是系统预留的。

  • 0 --- stdin,标准输入
  • 1 --- stdout,标准输出
  • 2 --- stderr,标准错误
重定向

两个重定向符 >>>

  • > :文件中的内容会先清空,再写入内容。
  • >>:将文本追加到目标文件中。
$ echo "Hello world" > tmp.txt
$ echo "Hello world" >> tmp.txt

使用重定向操作符时,重定向的内容不会出现在终端,而是直接被导入文件。默认使用标准输出。(>等同于 1>)如果想使用特定的文件描述符,必须将描述符置于操作符前。
当一个命令发生错误并退出时,会返回一个非0的退出状态;成功运行返回数字0。退出状态可通过状态变量 $?获得。

$ ls + 2> out.txt #错误重定向
$ cmd 2>stderr.txt 1> stdout.txt #stderr重定向到一个文件,stdout重定向到另一个文件
$ cmd > output.txt 2>&1 #将stderr转换成stdout,使得stderr和stdout都重定向到同一个文件中
$ cmd &> out.txt #作用同上
$ cmd 2> /dev/null #将stderr重定向到/dev/null

注:/dev/null是一个特殊的设备文件,该文件收到任何数据都会被丢弃。也被称为位桶(bit bucket)或黑洞。
当对stderr或stdout进行重定向时,重定向的文本将传入文件,就不能将输出通过管道(|)传给接下来的命令,而这些命令是通过stdin来接收文本的。
如果既要将数据重定向到文件,又要提供一份重定向的数据副本作为后续命令的stdin,可以使用tee来实现。
$ command | tee FILE1 FILE2
$ cat a* | tee out.txt | cat -n

相关文章

  • Shell--呈现数据

    文件描述符 用stdout和stderr文件描述符来在多个位置生成输出,重定向相应的文件描述符 临时重定向 在脚本...

  • 基础

    基础 文件描述符和重定向 文件描述符: 0 标准输入 1 标准输出 2 标准错误 重定向 >可以将文本保存到文件中...

  • linux就该这么学-002

    输入输出重定向 标准输入重定向「STDIN, 文件描述符为0」 标准输出重定向「STDOUT, 文件描述符为1」 ...

  • Linux中文件描述符,重定向与标准输入输出

    Linux中文件描述符,重定向与标准输入输出 文件描述符:内核(kernel)利用文件描述符(file descr...

  • Linux 学习笔记(十三):Linux 数据流重定向

    简单的重定向 1、文件描述符 2、将 cat 的连续输出(heredoc方式)重定向到一个文件 注意:不要将管道和...

  • Shell语法(5)--重定向

    重定向 在Linux中,所有输出的目标都是文件,一切皆文件,所以输出的目的地也是一个文件描述符 文件描述符 描述符...

  • 第5次课-Shell脚本语言-第5讲

    内容一:Shell脚本->重定向学习 1、创建文件读写描述符?"<>" 2、关闭文件描述符 3、列举打开的文件描述...

  • 15- Shell脚本基础(三)重定向

    在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,...

  • shell文件描述符与重定向

    文件描述符与重定向 1 文件描述1.1 文件描述的输出1.2 实例: 2 自定义描述符2.1 exec 命令创建全...

  • I\O重定向

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

网友评论

    本文标题:文件描述符和重定向

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