文章目录

  • 1 输入重定向
  • 2 输出重定向
  • 3 标准错误文件重定向
  • 4. Here Document
  • 5 /dev/null 文件
  • 6. 追加重定向

一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  1. 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  2. 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  3. 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

以上都是FILE* 类型的,也都分别指向一个FILE对象,这些FILE对象中封装了一个文件描述符,对应着相应文件。 但有些时候我们可能需要将数据从其它文件读入或读出,这就需要我们重定向。重定向的本质是:修改文件描述符fd下标 对应的struct file * 的内容 (将其换成目标文件的地址)。

1 输入重定向

我们可以让命令从文件中获取,这样本来的命令需要从标准输入stdin中获取,转换为从我们的指定文件中获取。这样本来需要从键盘输入的命令就会转移到文件读取内容。语法如下:

command1 < file

2 输出重定向

同输入重定向很相似,输出重定向也是将本来需要输出标准输出文件stdout中转化为我们的指定文件中,需要注意的是,这种输出重定向在使用的时候都会将原文件内容覆盖,如若需要保留原文件数据,我们就需要使用追加重定向,后文会进行解说。语法如下:

command1 > file

3 标准错误文件重定向

我们可以直接借助标准错误文件的文件描述符来重定向stderr,语法如下:

$ command 2>file

扩充一点,如果我们想将stdout标准输出文件和stderr标准错误文件合并重定向到一个指定文件中,语法如下:

$ command > file 2>&1

4. Here Document

Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。它的作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。基本语法如下:

command << delimiterdocument
delimiter

注意:

  1. 结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
  2. 开始的delimiter前后的空格会被忽略掉。

5 /dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null中,/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。语法如下:

$ command > /dev/null

6. 追加重定向

虽然输出重定向已经可以满足我们将输出的数据重定向到我们的指定文件中,但是这种重定向在每次输出数据时都会重新覆盖文件中的内容,而在实际生活中,我们经常需要将数据放在原文件的末尾,保留原文件内容的同时还要存放新数据,这时候就需要进行追加重定向,语法如下:

$ command >> file

Linux:输入/输出重定向相关推荐

  1. Linux输入/输出重定向

    重定向操作符--">".">>"."<"."<<" 在Linux系统中 默认的输入设 ...

  2. [linux] shell 输入/输出重定向 、 文件包含

    Shell 输入/输出重定向 大多数 UNIX 系统命令从终端接受输入并将所产生的输出发送回​​到终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是自己的终端.同样,一个命令通常将 ...

  3. Linux之shell编程篇-----Shell 函数和Shell 输入/输出重定向

    ​ 最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! ​ Shell 函数 1. 自定义函数 linux she ...

  4. Shell——输入/输出重定向

    Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...

  5. (转)Linux下的输入/输出重定向

    Linux环境中支持输入输出重定向,用符号<和>来表示. 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>lee.dat 表 ...

  6. 15-shell 输入/输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端. 一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端. 同样,一个命令通常将其输出写入到标准输出,默 ...

  7. Shell中的数据重定向--输入/输出重定向

    在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读 ...

  8. Shell 输入/输出重定向

    概述 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端. 一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端. 同样,一个命令通常将其输出写入到标 ...

  9. shell 的here document 用法、输入/输出重定向

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 什么是Here Document Here Document 是在Linux Shell 中的一种特 ...

最新文章

  1. python 守护线程 join_Python多线程threading join和守护线程setDeamon原理详解
  2. 程序员的职业生涯之我见
  3. 固件的完整形式是什么?
  4. 牛客网暑期ACM多校训练营(第十场)
  5. 【ACL2021】BERT也能做生成?利用多个BERT模型分离对话生成和对话理解
  6. adb.exe已停止工作
  7. 伦敦时间现在几点_英国伦敦时间现在几点钟(英国时差和中国差几个小时)
  8. 2022好用的便签记事日程提醒软件有哪些
  9. Android隐藏状态栏实现沉浸式体验
  10. 【MySQL】压缩包方式 - Windows下载安装及简单配置
  11. 研究生必备快速查找翻译阅读外文文献方法
  12. python输出水仙花数_python打印水仙花数(基础版)
  13. TRS平台如何使文章标题换行
  14. 用C语言开发NES游戏(CC65)03、VRAM缓冲区
  15. 华为 OSPF基本概念与基础配置
  16. webstrom主题、字体设置
  17. IDEA的主题样式20种
  18. 【读书笔记】《你有你的计划世界另有计划》——达·芬奇诅咒
  19. 高数:第五章(同济大学第七版)
  20. 2020智能交通展新发展方向“5G+智能交通”共赢未来 值得期待

热门文章

  1. 数字藏品平台运营合规需要哪些资质呢
  2. devops项目经理_DevOps招聘经理应准备回答的20个问题
  3. PLC语音播报器Modbus播报器485播报器
  4. Echarts日常:四角雷达图封装以及名称过长换行处理
  5. 真假小偷(python)实现
  6. 提测bug太多怎么办?如何提高提测版本质量
  7. 类、类实例、对象实例
  8. IOS使用OpenAL播放音频文件
  9. python第一语言_Python,2017第一语言
  10. Java 批量导出包含图片的Word文档