前言

环境:centos7.9

文件描述符

在执行一个shell命令是通常会自动打开3个标准文件,如下:

标准输入文件(STDIN,文件描述符为0):默认从键盘输入,也可以与重定向配合指定从文件或命令输入;
标准输出文件(STDOUT,文件描述符为1):默认输出到屏幕,也可以与重定向配合指定输出到文件;
错误输出文件(STDERR,文件描述符为2):默认输出到屏幕,也可以与重定向配合指定输出到文件;

STDIN对应/dev/stdin设备,STDOUT对应/dev/stdout设备,STDERR对应/dev/stderr设备;

输入输出重定向符号及作用

除了能从键盘输入和输出到屏幕,还应能从文件输入和输出到文件中保存信息,这就改变了原始的输出输出反向,这种改变就是重定向,重定向又分为输入重定向和输出重定向,而输出重定向又分为输出覆盖重定向和输出追加重定向。

command  < file               等价于 command  0> file                 #将文件作为标准输入,即文件作为命令的标准输入,默认就是0,0可以不写
command  << delimiter         等价于 command  << delimiter             #从标准输入中读入,直到遇到delimiter分隔符command  > file             等价于 command  1> file                 #将命令的标准输出内容覆盖到文件file,标准输入默认就是1,1可以不写
command  >> file                      #命令的标准输出内容追加到文件末尾,默认就是1,1可以不写command  2> file                      #命令的错误输出内容覆盖到文件,错误输出必须要写文件描述符2
command  2>> file                     #命令的错误输出内容追加到文件末尾,错误输出必须要写文件描述符2command  > file 2>&1                   # 2>&1意思是把 标准输出和错误输出 都重定向覆盖到 file文件
command  &>file                      #等价于上面一条,把 标准输出和错误输出 都重定向覆盖到 file文件command  >> file 2>&1                    # 2>&1意思是把 标准输出和错误输出 都重定向追加到 file文件
command  &>> file                         #等价于上面一条,把 标准输出和错误输出 都重定向追加到 file文件

还可以将标准输出和错误输出方便重定向到不同的文件:

command  >> file1  2>>file2                      # 标准输出重定向追加到 file1文件,错误输出重定向追加到 file2文件

演示示例:

test.txt文件是不存在的
ls /usr/local/apache/conf/ test.txt >>/stdout.txt  2>>stderr.txt        #标准输出内容追加到stdout.txt,错误输出内容追加到stderr.txt
ls /usr/local/apache/conf/ test.txt &>>/stdout.txt                    #表示标准输出和错误输出内容都追加到相同文件
ls /usr/local/apache/conf/ test.txt >>/stdout.txt  2>&1                    #同上

总结

标准输入:stdin    文件描述符    0          <  、<<    0< 、0<<         标准输入默认就是0,0可以省略不写
标准输入:stdout      文件描述符    1          >    、>>   1>、1>>         标准输出默认就是1,1可以省略不写
错误输出:stderr      文件描述符    2          >    、>>   2>、2>>         错误输出是2,2必须要写
2>&1 和 &符号
ls -l /etc/* fu.txt  >>outInfo.txt 2>&1                                #表示把标准输出和错误输出信息内容都追加到outInfo.txt文件
ls -l /etc/* fu.txt  &>>outInfo.txt                               #等价于上一条
ls -l /etc/* fu.txt  >>outInfo.txt 2>>err.txt                       #标准输出和错误输出内容分别追加到不同的文件
/dev/null 是一个无底洞,可以把不想要保留的信息丢进这个洞里

Linux文件描述符和输入输出重定向相关推荐

  1. linux文件描述符、软硬连接、输入输出重定向

    引用链接:https://blog.csdn.net/qq769651718/article/details/79459346 文件描述符的作用: 文件描述符是linux操作系统中特有的概念.其相当于 ...

  2. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处: linux下的文件描述符是与文件输入.输出相关联 ...

  3. 玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处:http://www.jbxue.com/arti ...

  4. <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>

    文章目录 1.文件描述符fd 2.重定向 3.文件流指针:FILE* 4.动态库和静态库 1.文件描述符fd 文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[ ...

  5. Linux文件描述符详解

    文章目录 一.概念 `1.1.特点` 优点 缺点 二.手动创建文件描述符 `2.1.语法` 2.1.1.创建 2.1.2.调用 2.1.3.关闭 `2.2.重定向输出的文件描述符` `2.3.重定向输 ...

  6. [转帖]linux文件描述符文件/etc/security/limits.conf

    linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...

  7. linux文件描述符导致squid拒绝服务

    linux文件描述符导致squid拒绝服务   前几天因工作需要在RHEL4.8上面架设了一个squid双网代理,刚开始测试一切正常,然后就在前台负载均衡服务器把这个代理地址加上,运行一段时间后,客服 ...

  8. Linux C:文件描述符、IO重定向、恢复标准输入输出

    目录 一.文件描述符 二.IO重定向 三.重定向回终端.伪终端 四.恢复标准输入输出 一.文件描述符 在Linux中,文件描述符是一个非负整数的数据类型.是FILE结构体中的一个成员属性. 每打开或者 ...

  9. 网络与IO知识扫盲(一):Linux虚拟文件系统,文件描述符,IO重定向

    系统IO原理 在 Linux 中: VFS(Virtual Filesystem Switch):虚拟文件系统,是一个目录树.树上不同的节点可以映射到物理的文件地址,可以挂载. 相当于一个解耦层,在具 ...

  10. linux 文件描述符

    linux中一切皆文件,socket,磁盘,线程,显示器,键盘等操作都是进行文件的操作. 文件类型 标记符 目录(directory) d 字符设备(character) c 块设备(block) b ...

最新文章

  1. 50本程序员圣经级别书籍!包邮送到家!一书在手,天下我有!
  2. Css2.0+Css3.0+jQuery手册 chm
  3. jquery入门与实践案例教程
  4. Linux下面makefile编写
  5. java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...
  6. postgresql+postgis安装
  7. 软件测试学习资料汇总
  8. Origin坐标轴上的连字符修改为负号
  9. 为什要使用BindService?为了调用服务中的方法
  10. python的学习结构
  11. 一文详说idea创建自定义的xml文件,比如创建mybatisConfig.xml等
  12. getReader()/getInputStream() has already been called for this request
  13. Python运维开发学习(一)
  14. 2021Java面经:最便宜java培训机构
  15. 华为和H3c--交换技术
  16. MySQL线上600W纪录的MyISAM表,要把存储引擎改为innoDB,一alter表就立马锁死的问题探讨
  17. nodejs解析zip文件
  18. 2020年美容师(中级)模拟考试及美容师(中级)考试软件
  19. 0基础、其他行业转行,适合学Python吗?
  20. Tomcat9环境配置

热门文章

  1. c 程序设计语言第一次作业,重大2017年C++程序设计语言第一次作业(含答案).doc...
  2. mysql分组函数及其用例
  3. PHP进行AES/ECB/PKCS7 padding加密的例子(openssl)
  4. vuejs 开发中踩到的坑
  5. ECSHOP用户评论
  6. ExtJS在面向对象所作出的努力
  7. 数据结构之红黑树插入案例详解
  8. 移动端车牌识别,小功能大作用
  9. IDC 监控技术介绍
  10. NB-IoT、eMTC与LoRa三大物联网技术相争,共存还是鏖战?