`
zsjg13
  • 浏览: 138331 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

文件描述符和重定向

 
阅读更多

    文件描述符是和文件输入与输出关联的整数。它们跟踪打开的文件。最熟知的文件描述符就是 stdin、stdout以及stderr。我们甚至可以将某个文件描述符的内容重定向到另一个描述符。

    在编写脚本时,常常要用到stdin、stdout 以及 stderr。通过过滤内容将一个输出重定向到一个文件是我们需要执行的一个基本事务。

    文件描述符就是和一个打开的文件或数据流相关联的整数值。

0: stdin (standard input)

1: stdout (standard output)

2: stderr (standard error)

    

    将输出文件重定向或保存到一个文件中:

$ echo "This is a sample text 1" > temp.txt    在写入之前,内容将被清空。

    附加内容:

$ echo "This is sample text 2" >> temp.txt

 

【成功和失败命令:当一个命令出错了,它会返回一个 非0 退出码,而0代表正常完成执行。可以从特殊的变量 $? 来读取该状态值。紧接在命令执行语句的后面运行 echo $? 就可以打印退出状态】

 

    下面的命令将 stderr 文本打印到屏幕上,而不是输出到文件中。并且因为没有 stdout 输出,所以 out.txt 是空的:

$ ls + > out.txt

    下面的命令将 stderr 重定向到 out.txt 中:

$ ls + 2> out.txt

    你可以重定向 stderr 到一个文件中,重定向 stdout 到另一个文件中,如:

$ cmd 2>stderr.txt 1>stdout.txt

    也能够将 stderr与stdout 都重定向到同一个文件中去,就是通过将 stderr 转成 stdout,例如:

$ cmd 2>&1 out.txt

或者

$ cmd &> out.txt

    有时候,输出可能包含一些不必要的信息(例如调试信息)。如果你不想输出终端背负stderr详细信息,你应当重定向 stderr 输出到 /dev/null,这会完全移除这些信息。$ cmd 2>/dev/null。

    重定向数据到一个文件后,再将该数据的一个副本传给后续的命令。就是通过 tee 命令。下面的代码中,stdin 数据是通过 tee 命令来接收的。它将stdout的一个副本写入到out.txt中,并发送另一个副本作为stdin给下一个命令。cat -n 命令会在从 stdin 接收到的每一行前面加一个行号,并将其写入到 stdout:

$ cat a* | tee out.txt | cat -n

。。。。。。。。。。。。。。。。。。未完

 

分享到:
评论

相关推荐

    重定向和管道、信号1

    重定向与管道进程与文件描述符活动文件目录AFD磁盘文件目录(分两级)文件名,i节点活动文件目录(分三级)文件描述符表FDT:每进程一张,PCB的user结构中u

    Linux基础命令学习——重定向与管道符(五)

    标准输入重定向:stdin,文件描述符为0,默认从键盘输入; 标准输出重定向:stdout,文件描述符为1,默认输出到屏幕; 错误输出重定向:stderr,文件描述符为2,默认输出到屏幕; 输入重定向 1、使用重定向命令把...

    第11章-重定向和文件的查找1

    第十一章 重定向和文件的查找本节所讲内容:11.1文件描述符 0、1、211.2重定向的含义-管道的使用-tee命令11.3 which-whereis-loc

    输入输出重定向

    文件描述符 标准输出 0 标准输入 1 标准错误 2 对于输入重定向来讲,用到的符号及其作用如下表所示: 符号 作用 命令1 > 文件 将标准输出重定向到一个文件中 命令 2> 文件 将错误输出重定向...

    Linux base shell重定向详解

    在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名: 文件 文件描述符 输入文件—标准输入 0(缺省是...

    shell常用重定向实例讲解

    每个打开的文件都会被分配一个文件描述符.stdin (键盘), stdout (屏幕), 和 stderr (错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 文件描述符是文件系统为了跟踪...

    Shell 输入/输出重定向

    Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入...将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描

    Linux系统配置-重定向讲解

    file descriptors ,FD,文件描述符 进程使用文件描述符来管理打开的文件 图示 FD是访问文件的标识,即链接文件 0是键盘只读 1,2是终端可以理解是屏幕 3+是文件,可读可写 示例 通过我们非常熟悉的VIM程序。来观察...

    Shell脚本学习笔记

    4.5.2 重定向文件描述符 90 4.5.3 创建输入文件描述符 91 4.5.4 创建读取/写入文件描述符 91 4.5.5 关闭文件描述符 92 4.5.6列出开发文件描述符 92 4.5.7禁止命令输出 94 4.6 使用临时文件 94 4.6.1 创建本地临时...

    FourOneLab#way-to-unicorn#07-Shell重定向1

    0 是一个文件描述符,表示标准输入(stdin)1 是一个文件描述符,表示标准输出(stdout)2 是一个文件描述符,表示标准错误(stderr)在标准情况下

    Shell编程范例之文件操作-TinyLab原创

    本文由TinyLab.org原创。 该文是自由书籍《Shell编程范例序列》的其中一章,该章主要介绍Linux下文件...关于文件在Linux下的“数字化”(文件描述符)高度抽象,“一切皆为文件”的哲学在shell编程里也得到了深刻的体现。

    sham:模拟bash风格的shell,在unix风格的OS上进行编码

    假 sham是一个命令外壳程序,可在MeNicks (模拟的Unix风格的OS)上运行。 要构建,测试和运行,请输入stack run 。...重定向到文件/描述符/从文件/描述符重定向:<输入>> foo 2>&1 管道(|) 背景

    shell 1filename重定向的含义和区别

    0 是一个文件描述符,表示标准输入(stdin) 1 是一个文件描述符,表示标准输出(stdout) 2 是一个文件描述符,表示标准错误(stderr) 在标准情况下, 这些FD分别跟如下设备关联: stdin(0): keyboard 键盘输入,并返回在...

    15呈现数据

    一.理解输入和输出  至此你已经知道了两种显示脚本输出的方法:   在显示器屏幕上显示输出 ...Linux用文件描述符(file descriptor)来标识每个文件对象。文件描述符十个非负整数,可以唯一标识会话中打开的文件。

    term-size:可靠地获得终端窗口大小

    当所有TTY文件描述符都重定向后,该模块甚至可以工作! 确认可以在macOS,Linux和Windows上运行。安装 $ npm install term-size用法 const termSize = require ( 'term-size' ) ;termSize ( ) ;//=> {columns: 143,...

    Linux的常用命令cat、sed、zip等用法,以及shell编程的基本语法,以及makefile编写方式等等

    3.lvim工作方式、gcc、gdb用法、动态库和静态库的制作与使用、makefile的编写语法,以及makefile里面的模式匹配、函数、伪目标等知识,以及文件描述符、文件操作(open、close、lseek、stat、dup等语法) 3.进程:进程...

    IO_deep_learning_notes.zip

    166 虚拟文件系统,文件描述符,IO重定向 地址 174 内核中PageCache、mmap作用、java文件系统io、nio、内存中缓冲区作用 地址 177 Socket编程BIO及TCP参数 地址 184 C10K问题及NIO精讲和IO模型性能压测 地址 185...

    LINUX与UNIX SHELL编程指南

    目录回到顶部↑目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 ...5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用

Global site tag (gtag.js) - Google Analytics