linux——标准i/o以及管道

author author     2022-10-09     707

关键词:

标准I/O以及管道



目录

一、什么是I/O

二、什么是管道

三、三种I/O设备

四、把I/O输出错误重定向入文件

五、tr

六、从文件中导入STDIN

七、使用管道链接命令

八、tee




一、什么是I/O

    I/O(input/output),即输入/输出端口

    每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。CPU与外部设备存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器        接口。存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。


二、什么是管道

    管道是Linux支持的最初UnixIPC形式之一管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有        管道所具有的功能外,它还允许无亲缘关系进程间的通信。

    具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立        的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。数据的读出        和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。


三、三种I/O设备

    1、标准输入(STDIN)-0

        输入设备:键盘、鼠标、麦克风、摄像头、扫描仪

    2、标准输出(STDOUT)-1默认输出到终端窗口

        输出设备:显示器、打印机、音响、耳机

    3、标准错误(STDERR)-2默认输出到终端窗口


四、把I/O输出错误重定向入文件

    1、STDOUT和STDERR可以被重定向到文件:

        command  操作符号  file

    2、支持的操作符号包括:
        >    把STDOUT重定向到文件
        2>   把STDERR重定向到文件
        &>  把所有输出重定向到文件
    3、> 文件内容会被覆盖
        set -C: 禁止将内容覆盖已有文件,但可追加
        >| file:强制覆盖
        set +C: 允许覆盖

    4、>> 原有内容基础上,追加内容

    5、2>: 覆盖重定向错误输出数据流
    6、2>>: 追加重定向错误输出数据流
   7、 标准输出和错误输出各自定向至不同位置
        COMMAND > /path/to/file.out2> /path/to/error.out
    8、合并标准输出和错误输出为同一个数据流进行重定向
        &>覆盖重定向
        &>> 追加重定向
        COMMAND > /path/to/file.out2>&1 (顺序很重要)
        COMMAND >> /path/to/file.out2>&1
    9、():合并多个程序的STDOUT
        (cal2007;cal2008)> all.txt


五、tr

    1、tr转换和删除字符
    2、tr[OPTION]... SET1 [SET2]
    3、选项:
        -c–C --complement:取字符集的补集
        -d--delete:删除所有属于第一字符集的字符
        -s--squeeze-repeats:把连续重复的字符以单独一个字符表示
        -t--truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
    4、通配符

        [:alnum:]:字母和数字

        [:alpha:]:字母

        [:cntrl:]:控制(非打印)字符

        [:digit:]:数字

        [:graph:]:图形字符

        [:lower:]:小写字母

        [:print:]:可打印字符

        [:punct:]:标点符号

        [:space:]:空白字符

        [:upper:]:大写字母

        [:xdigit:]:十六进制字符


六、从文件中STDIN

    1、使用<来重定向标准输入
    2、某些命令能够接受从文件中导入的STDIN
        tr‘a-z’‘A-Z’</etc/issue
        该命令会把/etc/issue中的小写字符都转换成写写字符
    3、 tr–d abc< /etc/fstab删除fstab文件中的所有abc中任意字符
    4、cat > file
        mage
        wangxiaochun
        按ctrl+d离开,可以使用文件来代替键盘的输入   

    5、cat > filea< fileb


六、使用管道链接命令

    1、管道(使用符号“|”表示)用来连接命令
        命令1 | 命令2 | 命令3 | …
            将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
            STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
            最后一个命令会在当前shell进程的子shell进程中执行用来
            组合多种工具的功能
            ls | tr 'a-z' 'A-Z'

    2、less :一页一页地查看输入
        ls-l/etc|less

    3、mail:通过电子邮件发送输入
        echo"testemail"|mail-s "test"[email protected]

    4、lpr:把输入发送给打印机
        echo"testprint"|lpr-Pprinter_name

    5、- 符号

        示例:
            将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,将tar -cvf-/home 传送给后面的tar -xvf-, 后面的这个-则是取前一个命令的stdout,因             此,就不需要使用临时file了

                tar -cvf-/home | tar -xvf-


七、重定向到多个目标(tee)

    1、命令1 | tee[-a ] 文件名| 命令2
        把命令1的STDOUT保存在文件中,做为命令2的输入
        -a 追加

    2、使用:
        保存不同阶段的输出
        复杂管道的故障排除
        同时查看和记录输出

linux下的i/o与管道

阅读目录1.标准输入输出2.输入输出重定向3.tr命令4.管道和tee5.练习 1、标准输入输出   (1)linux给程序提供三种I/O设备      标准输入:(STDIN)   —0  默认接受来自键盘的输... 查看详情

linux基础知识-i/o重定向,管道

系统设定 默认输出设备:标准输出,STDOUT,1 默认输入设备:标准输入,STDIN,0 标准错误输出:STDERR,2 标准输入:键盘标准输出和错误输出:显示器I/O重定向:Linux:>:覆盖输出[[email protected]~]#ll/var/>/tmp/var.out[[e... 查看详情

标准i/o和管道

1、标准输入和输出1>程序:指令+数据(指令服务于数据)  读入数据:input  输出数据:output2>三种I/O设备  Linux给程序提供三种I/O设备    标准输入(STDIN)-0默认接受来自键盘的输入    标准输出(STDOUT)-... 查看详情

标准i/o和管道

...使用四.使用管道链接命令五.tee命令的使用三种I/O设备(1)标准输入和输出程序:指令+数据a.指令:决定了功能是什么数据:b.读入数据:input输出数据:output(2)打开的文件都由一个(3)Linux给程序提供三种I/O设备:标准输入(STDIN)... 查看详情

linux学习第五节课-标准i/o和管道

                               Linux学习第五节课--- 查看详情

标准i/o和管道(代码片段)

3月14日标准I/O和管道1.在linux里每打开一个文件,就会响应开启一个文件描述符(fd)例:打开/var/log/message[[email protected]data]#tail-f/var/log/messagesMar1120:37:36centos7NetworkManager[6246]:<info>[1552307856.6123]dhcp4(ens33 查看详情

标准i/o及管道的使用用法

...出数据:Output Linux给程序提供的三种I/O设备  标准输入,-O默认接受来自键盘的输入  标准输出,-1默认输出到终端窗口  标准错误, 查看详情

10标准i/o输入输出重定向及管道

标准输入及输出linux提供三种I/O设备标准输入stdin-0默认接受来自终端的输入标准输出stdout-1默认输出到终端窗口标准错误stderr-2默认输出到终端窗口I/O重定向redirectI/O重定向:将默认的输入,输出或错误对应的设备改变,指向新的... 查看详情

标准io和管道

标准I/O和管道##一,标准输入和输出##程序:指令+数据读入数据:Input输出数据:Output打开的文件都有一个fd:filedescriptor(文件描述符)Linux给程序提供三种I/O设备标准输入(STDIN)-0默认接受来自键盘的输入标准输出(STDOUT)-1默... 查看详情

第五章linux重定向和管道

重定向和管道标准输入和输出:程序:指令+数据读入数据:Input输出数据:Output打开的文件都有一个fd:filedescriptor(文件描述符)Linux给程序提供三种I/O设备标准输入(STDIN)-0默认接受来自键盘的输入标准输出(STDOUT)-1默认输... 查看详情

标准i/o重定向和管道(代码片段)

一级标题标准I/o重定向和管道二级标题三种I/o设备1.标准输入和输出程序:指令+数据读入数据input输出数据output标准输入---0(默认接收来自终端窗口的输入)标准输出---1(默认输出到终端窗口)标准错误---2(默认输出到终端窗口)二级... 查看详情

标准io重定向和管道(代码片段)

标准I/O重定向和管道1标准输入和输出程序:指令+数据读入数据:Input输出数据:Output打开的文件都有一个fd:filedescriptor(文件描述符)Linux给程序提供三种I/O设备标准输入(STDIN)-0默认接受来自终端窗口的输入标准输出(STDOUT)-1... 查看详情

标准i/o和管道

1:三种I/O设备标准输入(STDIN) -0 默认接受来自键盘的输入标准输出(STDOUT)-1 默认输出到终端窗口标准错误(STDERR)-2 默认输出到终端窗口I/O重定向:改变默认位置 >把正确结果输出到文件2>把错误输出到文件&... 查看详情

第四章标准i/o和管道

笔记整体起始时间:2018年4月2日18:55:25 本章内容       三种I/O设备       把I/O重定向至文件       使用管道 标准输入和输出&nbs 查看详情

标准i/o和管道(代码片段)

标准I/O和管道>重定向操作符>,>>还能创建新文件>覆盖>>追加set-C禁止将内容覆盖已有文件,但可追加(相当于一个开关)>|file强制覆盖set+C允许覆盖1>标准输出重定向到一个文件里面2>标准错误重定向到一个文... 查看详情

管道及i/o重定向

...制指令寄存器:CPU暂时存储器系统设定:默认输出设备:标准输出STDOUT1 标准输入设备:标准输入STDIN   0 标准错误输出:STDERR 查看详情

检测命名管道与 I/O 完成断开连接

...确方法的问题。我们有一个服务器可以创建子进程,并将标准输入/标准输出重定向到命名管道。管道已打开OVERLAPPED。我们已经看到,在客户端发出CreateFile()后 查看详情

linux从入门到跑路–重定向管道(代码片段)

linux从入门到跑路重定向管道Linux给程序提供三种I/O设备标准输入(STDIN)-0默认接受来自键盘的输入标准输出(STDOUT)-1默认输出到终端窗口标准错误(STDERR)-2默认输出到终端窗口I/O重定向:改变默认位置重定向重定向会覆... 查看详情