I/O重定向及管道

一、I/O重定向

    程序=指定+数据

    读取数据:input

    输出数据:output

    打开的文件都有一个fd:文件描述符

    linux给程序提供三种I/O设备:

        标准输入(standard input) -0 默认接受来自键盘的输入

        标注输出(standard output) -1 默认输出到终端窗口

        标准错误(standard erroe) -2 默认输出到终端窗口

    I/O重定向:改变默认位置

二、标准输出和标准错误可以被重定向到文件 

    command 操作符号 文件名

    支持的操作符号:

        >:把标准输出重定向到文件

[root@localhost ~]# ls > /wang/dir
[root@localhost ~]# cat /wang/dir
anaconda-ks.cfg
mima.txt
mulu1
mulu2
wenjian1
wenjian2
yonghu.txt

        2>:把标准错误重定向到文件

[root@localhost ~]# xxx 2> /wang/dir
[root@localhost ~]# cat /wang/dir
-bash: xxx: command not found

        &>:把所有输入重定向到文件  

[root@localhost ~]# ls /wang /wang/x &> /wang/dir
[root@localhost ~]# cat /wang/dir
ls: cannot access /wang/x: No such file or directory
/wang:
123
dir

    >文件内容会被覆盖

         set -C:禁止将内容覆盖已有文件,但可追加

            强制覆盖>|

        set +C:允许覆盖

    >>:在原有的内容上,追加内容,不会被覆盖。

    2>:覆盖重定向错误输出数据流

    2>>:追加重定向错误输出数据流

    标准输出和标准错误各自定向不同位置

        command > 文件1 2> 文件2

[root@localhost ~]# ls /wang /wang/xx > /wang/yes 2> /wang/no
[root@localhost ~]# cat /wang/yes /wang/no
/wang:
123
dir
no
yes
ls: cannot access /wang/xx: No such file or directory

    合并标准输出和错误输出为同一个数据流进行重定向

    &>:覆盖重定向

    &>>:追加重定向

    command > 文件 2>>&1 (固定顺序)

    command >> 文件 2>>&1

    ():合并多个程序的标准输出 

[root@localhost ~]# (ls;pwd) > /wang/321
[root@localhost ~]# cat /wang/321
anaconda-ks.cfg
mima.txt
mulu1
mulu2
wenjian1
wenjian2
yonghu.txt
/root

三、tr命令

    tr – 转换和删除字符

    t2 选项 set1 set2

     常用选项:

        -c或–complerment:取字符集的补集

        -d或–delete:删除所有属于第一字符集的字符

        -s或-squeezu-repeats:把连续重复的字符以单独一个字符表示

        -t或–truncate

        set1:将第一个字符集对应字符转化为第二字符集对应的字符

四、从文件中导入标准输入

    使用<来重定向标准输入

    某些命令能接受从文件中导入的stdin

        tr ‘a-z’ ‘A-Z’ < /etc/issue

        这条命令会把/etc/issus中的小写字符都转换成大写字符

[root@localhost wang]# tr 'a-c' 'A-C' < /wang/qqq
ABCdefg

        tr -d abc < /etc/fstab

        删除fstab文件中的所有adc中任意字符

[root@localhost wang]# tr -d abc < /wang/qqq
defg

        cat > filea

         mage

         wang

        按ctry+d离开,可以使用文件来代替键盘的输入

[root@localhost wang]# cat  > qqq
123 
qwe
asd
123[root@localhost wang]#

        cat > filea < filed

[root@localhost wang]# cat > 123 < qqq
[root@localhost wang]# cat 123
123 
qwe
asd
123

五、把多行发送给标准输入

    使用“<<终止词”命令从键盘把多行重定向给stdin

        直到 终止词 位置的所有文本都发送给stdin

        有时被成为就地文本(heretext)

[root@localhost wang]# mail -s "Please Call" linux@wang <<end
> Hi wang
> please give me a cao when you get in ,
> we man need to do some maintenance on server
> 
> end
[root@localhost wang]#

六、管道

    使用符号“|”表示,用来链接命令

    命令1|命令2|命令3

    将命令1的标准输出发送给命令2的标准输入,命令2的标准输出发送到命令3的标准输入

    标准错误默认不能通过管道转发,可利用2>&1或|&实现

    最后一个命令会在当前shell进程的字shell进程中执行,用来组合多种工具的功能

[root@localhost wang]# cat qqq | tr 'a-d' 'A-D'
123 
qwe
AsD
123

    less:一页一页的查看输入

        ls -l /wang | less

    

    mail:通过电子邮件发送输入:

        echo"test email" | mail -s "test" user@example.com

    lpr:把输入发送给打印机

        echo"test print" |lpr -P printer_name

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

    命令1 | tee 文件名 | 命令2

        把命令1中的标准输出保存在文件名中,然后管道输出给命令2使用:

        保存不同阶段的输出

        复杂管道的故意排除

        同时查看和记录输出

[root@localhost wang]# ls | tee /wang/wang
123
321
dir
no
qqq
wang
yes
[root@localhost wang]# cat /wang/wang
123
321
dir
no
qqq
wang
yes

原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/27268

(0)
DYWDYW
上一篇 2016-08-02 16:44
下一篇 2016-08-02 16:58

相关推荐

  • N25_第一周博客作业

    一、计算机组成及其功能      1、CPU:          运算器:计算功能,对数据进行加工处理的部件。          控制器:负责从存储器读取指令,控制计算器之间的运行状态和结果;     &nbs…

    Linux干货 2016-12-04
  • Linux系统发展历史

    一、什么是Linux? Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和…

    Linux干货 2016-10-14
  • 实验:配置静态路由2

    实验:配置静态路由2 IP地址规划如下: VMware实验环境下给网卡分配不同的VMnet以实现物理分隔广播域: Client1-VMnet1: R1-VMnet1-VMnet2: R2-VMnet2-VMnet3: R3-VMnet3-VMnet4: Client2-VMnet4: 注意,环境准备: 1、MAC地址不要有冲突,如果是复制的虚拟机,对于cen…

    2017-03-26
  • heartbeat实现高可用集群(1)

    环境 node1 192.168.1.35 node2 192.168.1.36 fip 192.168.1.80 daemon httpd nfs 192.168.1.15 配置HA集群的前提 1.节点时间必须同步,使用ntp协议实现 2.节点间需要通过主机互相通信,必须解析主机名至IP地址 a.建议名称解析功能能使用hosts文件实现 b.通信中使用的名…

    Linux干货 2017-11-03
  • bash脚本基础

    一,概述 shell脚本 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 编程逻辑处理方式: 顺序执行 循环执行 选择执行 shell编程:过程式、解释执行 编程语言的基本结构: 数据存储:变量、数组 表达式: a + b 语句:if shell脚本是包含…

    Linux干货 2016-08-19
  • 对inode的初步理解

    1.什么是inode?     inode中文译作”索引节点“,是linux操作系统中的一种数据结构,用来存储文件的元数据信息。在linux系统中每个文件都会分配一个inode,我们也可以把inode看作指针,它永远指向文件的具体存储位置。 2.inode中包含了什么信息? * inode 编号 * 用来识别文件类型,以及用于 …

    2017-07-18