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

相关推荐

  • 进程和优先级

         什么是进程?我们先来了解一下进程的概念:我们知道操作系统最核心的概念就是进程。进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。但是进程是一个动态的实体,它是程序的一次执行过程。进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。    当多个任务要执行时怎么办呢?先执行…

    2017-09-09
  • 8.9作业

    删除/etc/grub2.conf文件中所有以空白开头的行,行首的空白字符 [root@English6 ~]# sed "s@^[[:space:]]\+@@" /etc/grub.conf  # grub.conf generated by an…

    Linux干货 2016-08-11
  • 十四.Linux博客-2016年8月22日数组

    格式说明: 操作 概念 命令 说明及举例 十四.数组 数组概念 变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间,相当于多个变量的集合。数组名和索引索引:编号从0开始,属于数值索引注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持。bash的数组支持稀疏格式(索引不连续) 声明数组declare -…

    Linux干货 2016-08-24
  • Linux上的文件管理类命令

    N27-第二周作业

    2017-10-08
  • Linux磁盘与文件系统管理

    Linux磁盘管理 硬盘的物理组成 柱面 硬盘与读存数据相关的部件:圆形硬盘片(一或多个)、磁头、机械臂。 硬盘片上有磁道,多个硬盘片上的同一磁道形成柱面,这个柱面就是分区时形成的最小单位,windows的C盘(系统盘)分区就是在最外层的一堆柱面上。 扇区 硬盘上的最小存储单位叫扇区,每个扇区储存512字节。在读取数据的时候,硬盘会转动,利用机械手臂将磁头移…

    Linux干货 2016-11-22
  • FTP部署及简单应用

    文件服务: ftp:应用层,C/S,文件共享;file transfer protocol; nfs,cifs:文件系统接口,网络文件系统;     nfs:network file system     cifs:common …

    Linux干货 2016-10-19