管道和I/O重定向

I/O即输入输出,在linux中标准的输入输出设备为键盘和显示器,当我们执行一条命令时,默认的输出结果会显示在屏幕上,如果我们不想让它显示在屏幕上时,就需要使用输出重定向来让它显示在其他设备或保存在某个文件中。

重定向即修改默认的输入输出设备为其他设备或文件;

命令执行过程的数据传输情况

当我们执行一个命令的时候,会由文件读取数据,经过处理后,再将结果输出到屏幕;Standard Output和Standard Output Error分别代表标准输出和标准错误输出;

在linux系统中,所有的操作都是对文件进行操作,而对文件的操作是利用文件描述符(File Descriptor、FD)来实现的;I/O重定向通常与FD有关,shell的FD通常有10个0~9;常用的FD有三个:

0:表示Stdin(标准输入)

1:表示Stdout (标准输出)

2:表示 Stderr(标准错误输出)

标准输出是命令执行成功后所返回的信息

>:以覆盖方式将标准输出重定向输出到其他设备或文件

>>:以追加方式将标准输出重定向输入到其他设备或文件

标准错误输出是命令执行失败后所返回的信息

2>:以覆盖方式将标准错误输出重定向到其他设备或文件

2>>:以追加方式将标准错误输出重定向到其他设备或文件

标准输入是由键盘所输入的数据

<:将原本有键盘输入的数据改为由文件内容来取代

<<:意为此处文档,当输入遇到<<后面跟的内容是会终止输入

当使用一条命令处理一个文件时,还要将处理的结果继续进行后续处理,就可以使用管道来实现将上一条命令的结果交给下一条命令执行;

管道(pipe):操作符 | ,仅能处理上一条命令的标准输出信息,对标准错误输出没有处理能力

注意:

1、管道命令只能处理上一条命令的STDOUT信息,不能处理STDERR信息

2、管道右边命令必须是能够接受标准输入流命令

管道和I/O重定向

时间: 2024-10-22 12:41:19

管道和I/O重定向的相关文章

Linux命令(九)管道和I/O重定向&gt;、&gt;&gt;、2&gt;、2&gt;&gt;、&amp;&gt;、&lt;、&lt;&lt;、tee

重定向:> < >> << 运算器.控制器: CPU存储器:RAM输入设备/输出设备 程序:指令和数据 控制器:指令运算器:存储器: 地址总线:内存寻址数据总线:传输数据控制总结:控制指令 寄存器:CPU暂时存储器 I/O: 硬盘, 程序 INPUT设备: OUTPUT设备 系统设定    默认输出设备:标准输出,STDOUT, 1    默认输入设备:标准输入, STDIN, 0    标准错误输出:STDERR, 2    标准输入:键盘标准输出和错误输出:显示器

linux综合顺练(涉及管道,正则,重定向、用户及组管理、权限管理等相关知识点)

一.概述   本博文是对前边总结的知识点的一个综合利用,涉及的知识点比较广泛,涉及的大概有"bash特性之管道","bash特性之重定向","grep命令与正则表达式的利用","linux下用户与组管理","linux下权限管理"等.下面给出上边提到知识点之前的博客链接: bash的重定向和管道相关知识点:http://blog.51cto.com/9657273/2172717 文件基础管理类命令汇总:h

管道及I/O重定向

管道及IO 重定向 > < >> <<计算机组成: 运算器,控制器:CPU 存储器:RAM 输入/输出设备 I/O 程序: 指令和数据 控制器:指令 运算器: 存储器: 地址总线: 内存寻址 数据总线: 传输数据 控制总线: 控制指令 寄存器: CPU暂时存储器 系统设定: 默认输出设备: 标准输出 STDOUT 1 标准输入设备: 标准输入 STDIN     0 标准错误输出: STDERR                2 标准输入: 键盘 标准输出和错误输出:

Linux中的管道与重定向

前言: 这篇博文主要参考了鸟哥的<鸟哥的Linux私房菜>和杨鹏(NetSnake)的<Linux服务器架设>这两本书,以及在网络上查阅的资料.此博文作为我阅读<鸟哥的Linux私房菜>和<Linux服务器架设>这本书的读书笔记.那么接下来就让我们依次了解它们. 概述: 熟悉操作系统的朋友,常常会听到.用到管道和重定向这两个词,那么究竟什么是管道,什么是重定向?他们对我有用吗?可以说,管道和重定向是操作系统的精髓之一,在操作系统的进程.程序和管理等各方面,都

Linux管道及重定向

Linux管道及重定向 对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制.在shell中,我们通常使用符合'|'来表示管道,符号'>'和'<'表示重定向.那么管道和重定向的真实含义(定义)又是什么呢? 管道 管道的定义 管道就是一个进程与另一个进程之间通信的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的输入.它是半双工运作的,想要同时双向传输需要使用两个管道.管道又可以分为匿名管道和命名管道,而shell中使用到的是匿名管道,所以本文仅描述

Shell中while循环的done 后接一个重定向&lt;

转自:http://hi.baidu.com/%CE%D2%D2%AA_%D1%A7_%CF%B0/blog/item/b3b5e723bb2ed1265243c1e4.html 读文件的方法: 第一步: 将文件的内容通过管道(|)或重定向(<)的方式传给while 第二步: while中调用read将文件内容一行一行的读出来,并付值给read后跟随的变量.变量中就保存了当前行中的内容. 例如读取文件/sites/linuxpig.com.txt 1)管道的方式:      cat /sites

无名管道跟dup,dup的使用

参考资料: http://www.tldp.org/LDP/lpg/node11.html http://blog.csdn.net/yeyuangen/article/details/6852682 http://blog.sina.com.cn/s/blog_65c5c5990100mx6d.html 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别. 下面是一个

Unix/Linux进程间通信(二):匿名管道、有名管道 pipe()、mkfifo()

1. 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程): 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中. 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出.

11_Shell语言———管道详解

管道的基本用法为: COMMAND1 | COMMAND2 | COMMAND3 | ... COMMAND1 的输出结果会作为输入参数传递给COMMAND2, COMMAND2加以处理后会传递给COMMAND3, 依此类推.管道的使用便是Linux哲学思想中"组合小程序完成复杂任务"的体现方式. 如果管道的最后一个命令是在当前shell的子shell中执行,那么该执行结果不能保存为一个变量,这样会导致当前shell无法获取执行结果,这是由shell中"本地变量只对当前she