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
下一篇 2016-08-02

相关推荐

  • 马哥linux运维网络班第22期-第一周博客作业

    计算机的组成及其功能 计算机由运算器,控制器,存储器,输入装置和输出装置组成 (1)运算器 对数据进行常规运算(+,-,*,/)和逻辑运算(与,或,非等)及比较位移等操作 (2)控制器 分析从存储器中读出的指令并按预先规定的步奏执行操作 (3)存储器 存储程序和数据信息并实现快速存取 (4)输入设备 把各种类型的信息转换为二进制编码输入进计算机存储起来 (5…

    Linux干货 2016-08-14
  • 网络基础知识札记

    Linux网络属性管理(1)     Bell(AT&T), PARC(Xerox)        以太网     计算机网络:共享底层通信信道         CSMA/CD算法      &nbsp…

    Linux干货 2016-09-06
  • vim编辑器

    vim基础的认识

    2017-11-26
  • Linux新增磁盘分区

    磁盘的分区        主分区与扩展分区最多可以有4个(分区表64字节,每分区占16字节);        扩展分区最多只能有一个;        逻辑分区是由扩展分区持续分出来的分区;       &nbs…

    Linux干货 2016-05-29
  • 2016/08/07:文本处理工具及正则表达式

      在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的…

    Linux干货 2016-08-07