码迷,mamicode.com
首页 > 其他好文 > 详细

管道与重定向

时间:2017-07-25 22:36:38      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:otto   命令执行   pat   命令   under   logs   efault   窗口   分享   

目录

         重定向

         转换和删除字符tr

从文件中导入STDIN

把多行发送给STDIN

管道

重定向到多个目标

重定向

先说什么是标准输入输出,我们从键盘上敲击,然后输入到我们的电脑中,这是标准的输入,那么什么是标准输出呢,我们在经过一系列正确的操作得到的能在屏幕上显示出来的输出是标准输出。那不正确的操作产生的能显示在屏幕上的信息是啥呢,那就是标准错误。

 

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

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

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

   我们可以将我们的操作进行重定向,将信息输入到文件当中去,我们可以通过这样的操作去观察一下操作信息,或我们进行的错误信息。

           >:把标准输出(stdout)进行重定向

           2>:把标准错误输出(stderr)进行重定向

           &>:代表吧所有输出进行重定向

 技术分享

  > 文件内容会被覆盖

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

  >| file:强制覆盖

  set +C: 允许覆盖

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

技术分享 

把输出和错误重新定向到文件

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

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

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

COMMAND > /path/to/file.out 2> /path/to/error.out

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

    &> 覆盖重定向

    &>> 追加重定向

    COMMAND > /path/to/file.out 2>&1 (顺序很重要)

    COMMAND >> /path/to/file.out 2>&1

    ():合并多个程序的STDOUT

( cal 2007 ; cal 2008 ) > all.txt

转换和删除字符(tr

格式:tr [option] .. set1 set2

作用:转换和删除字符

选项:

                  -c:取字符集的补集

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

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

                  -t:将第一个字符集对应的字符转换第二字符集对应的字符(默认)

对应的字符:

[:digit:]:数字

[:alpha:]:字母

[:lower:]:小写字母

[:upper:]:大写字母

[:alnum:]:字母和数字

[:punct:]:标点符号

[:space:]:空白字符

[:print:]:可打印字符

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

[:graph:]:图形字符

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

技术分享

从文件中导入STDIN

使用<来重定向标准输入

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

tr ‘a-z’ ‘A-Z’< /etc/issue该命令会把/etc/issue中的小写字符都转换成写写字符

                 tr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符

       cat > file

mage

wangxiaochun

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

      Cat > filea < fileb

技术分享 

把多行发送给STDIN(不常用)

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

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

         有时被称为就地文本(heretext

例如:

         [root@CT71 tmp]# mail -s "HELP" root << END

> Hello

> My name is Shanghai,May I know your name?

> END

管道

管道命令无疑是我们在今后操作Linux经常会用带的命令,它的作用是将我们在上一步操作产生的正确的标准输出使用管道后面的命令继续进行操作,如ls /etc/* | grep passwd是不是我们有操作产生的标准的错误输出就无法进行管道处理了呢,并不是的,我们可以使用2>&1|&进行将产生的标准错误输出 交给下一个命令执行。

技术分享 

管道中的—符号

         这个符号就像一个临时介质,我们可以将我们处理的信息暂时存在这个介质里,然后交给管道后面的命令继续对介质中的信息继续处理。这样,我们就必将我们在第一步处理的信息先存在磁盘上在进行下一步操作了,十分的方便。

 

重定向到多个目标(tee

         格式:command_1 | tee [-a] file_name | command_2

         作用:把命令1STDOUT保存到文件中作为命令2的输入

         选项:-a:追加

         作用:保存不同阶段的输出

                     复杂管道的故障排除

                     同时查看和记录输出

技术分享

 

 

技术分享 

 

管道与重定向

标签:otto   命令执行   pat   命令   under   logs   efault   窗口   分享   

原文地址:http://www.cnblogs.com/duzhaoqi/p/7236374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!