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

相关推荐

  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • N25-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 1.  [root@jizo etc]# ls –d skel 2.  skel 3.  [root@jizo etc]# cd /home 4.  [root@jizo …

    Linux干货 2016-12-26
  • 系统启动流程

    CentOS 5和6的启动流程服务管理Grub管理自制Linux启动排错编译安装内核 系统启动流程:  POST –> 读取BootSequence (BIOS),决定引导次序 –>读取引导设备的Bootloader(MBR grubstage1–>stage1.5/boot…

    Linux干货 2016-09-13
  • Homework Week-12 LAMP部署

    1、请描述一次完整的http请求处理过程;     http全称超文本传输协议,属于应用层协议;常见客户端应用是各种浏览器。     一次服务器端完整http请求处理过程:     (1)建立或处理连接:接收请求或拒绝请求;     (2)接收请求:接收来自于…

    Linux干货 2016-12-05
  • sed命令解析

    处理文件的工具sed Stream EDitor, 行编辑器 一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上模式空间 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space), 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往…

    Linux干货 2016-08-11
  • shell编程进阶

    2、编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息 read -p “Enter you choice yes|no:” Choice Choice1=`echo $Choice | tr ‘[a-z]’ ‘[A-Z]&#8…

    2017-09-16