重定向与管道

 

   本次内容

   1.三种I/O设备

   2.把I/O从定向入文件

   3.命令tr

   4.使用管道链接命令

   5.tee

 

我们都知道程序是由:指令+数据

       读入数据:Input

       输出数据:output

而打开的文件都有一个fd: file
descriptor (文件描述符)

同时也有三种I/O设备:

                标准输入 0  默认是由接受键盘输入

                标准输出 1  默认是输出到终端窗口显示屏

                标准错误 2   默认是输出到终端窗口显示屏

 

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

   标准输出的不管是错误或默认输出都可以重定向到文件之中它的格式为:    

  命令  操作符号 文件名


   支持符号包括

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

   2> 把错误重定向到文件中

   &> 把所有(不管是正确还是标准输出错误)的重定向到文件中

 重定向与管道

 重定向与管道

 重定向与管道

 

注意:

       用重定向符号时> ,2> ,
&> 时原来的文件内容会被覆盖

 重定向与管道

 

在原来基础上,追加内容  >>

 重定向与管道

 

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

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

重定向与管道


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

OMMAND >
/path/to/file.out2> /path/to/error.out

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

&>覆盖重定向

&>>
追加重定向

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

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

 

 重定向与管道

 

  注意:>>& 排序是错误的

 重定向与管道

 

  标准输出 <

 重定向与管道

    tr转换和删除字符

tr[OPTION]…
SET1 [SET2]

选项:

-c–C –complement:取反(除了)

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

-s  连续的压缩

 重定向与管道

 

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

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

有时被称为就地文

 重定向与管道

 

   管道 

管道(使用符号“|”表示)用来连接命令

命令1 | 命令2 | 命令3 | … 

   表示用命令1的输出作为命令2的输入命令2的输出作为命令3的输入

   注意:STDERR默认不能通过管道转发,可利用2>&1 或|& 实现

 重定向与管道

 

将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,将tar -cvf-/home 传送给后面的tar -xvf-, 后面的这个-则是取前一个命令的stdout,因此,就不需要使用临时file了

tar -cvf-/home | tar -xvf-

 

命令1 | tee[-a ] 文件名| 命令2

把命令1的STDOUT保存在文件中,做为命令2的输入

-a 追加

使用:

保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

重定向与管道

一道很有意思的题目,不用循环,可以用管道

   计算1+2+3+..+99+100的总和

重定向与管道

 

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

(0)
m25Chronosm25Chronos
上一篇 2017-07-23 17:45
下一篇 2017-07-23 18:02

相关推荐

  • Linux下的网络配置方法(二)

    Linux下配置网络的方法还可以通过修改配置文件和使用nmcli命令来完成:     1. 修改配置文件:         网络接口的配置文件为:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_…

    Linux干货 2015-12-15
  • Linux下btrfs子卷的挂载

        对btrfs文件系统的补充:     btrfs文件手动挂载自不必多说,但若想btrfs文件系统开机自动挂载,该如何实现呢?     其实只需添加挂载选项即可,如下: UUID=c99895c8-5b14-4276-80c7-ecf…

    Linux干货 2015-12-19
  • LAMP基于RPM包实现(httpd与php以fastcgi方式结合) 2

    概述:     承接上篇,本篇为介绍下利用rpm包,实现LAMP组合,其中httpd和php的结合方式为fastcgi,也就是php运行为独立的服务,监听的某个套接字上,接受请求,提供服务     包括LAMP安装过程(http、php-fpm、mysql-server、php-…

    Linux干货 2016-10-15
  • 马哥教育网络班22期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (uti…

    Linux干货 2016-11-07
  • 文件的查找工具find

    有的时候我们需要快速查找一些文件,但是我们却不知道这个文件在哪的时候,就急切的需要一个工具来帮助我们,这时候find就诞生了。Find能实现精确查找,虽然速度略慢,但是并不妨碍我们使用,下面就介绍一下find的使用方法。(一) 基于时间戳的查找          假如需要查看七天前的文件,但是总不能一一的去看…

    2017-08-13
  • Python入门之迭代,列表解析,生成器及文件操作

    迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)迭代器只能往前不会退后 以下类型支持迭代 序列类型:list,str,tuple 非序列类型:dict,file 自定义类 通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象 l1=range(5) iter1=…

    Linux干货 2015-12-13