当前位置:   article > 正文

Linux的重定向与管道_linux管道与重定向

linux管道与重定向

linux的重定向和管道

1. 标准输入与输出

2. 输出重定向

3.输入重定向

4. 进程管道技术

5. tee管道技术

为什么要使用重定向

1.想要保存屏幕中要输出的信息
2.不想看到这个结果,想将他直接丢弃
3.或者要对信息做一个处理,以便于我们观察。
  • 1
  • 2
  • 3

1. 标准输入与输出

执行一个shell命令时通过会有三个过程,对应三个文件。

标准输入  (STDIN, 文件描述符为0) 通常对应终端的键盘,或者通过其他方式文件(比如文件内容)
标准输入   (STDOUT, 文件描述符为1)  默认输出到屏幕。	
输入错误   (STDERR, 文件描述符为2)默认输入出到屏幕
文件名称   (filename, 文件描述符为3+)
  • 1
  • 2
  • 3
  • 4

进程在标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,将错误信息输入到错误文件中,进程使用文件描述符(file descriptor )来管理打开这些文件。

//查看一个进程的文件描述符
FD:
ll /proc/pid/fd


cat 命令为例,其功能就是读取命令后面输入的文件,将文件的内容送到标准输出。
如果cat 后面不跟任何东西,就是直接读取标准输入中的内容直接送到标准输出。

[root@hjh ~]# cat
1           //输入 1
1           //打印 1
2
2
3
3


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

[root@hjh ~]# vim /etc/passwd         
  1 root:x:0:0:root:/root:/bin/bash
  2 bin:x:1:1:bin:/bin:/sbin/nologin
  .......
  //然后crtl + Z
[1]+  Stopped                 vim /etc/passwd
[root@hjh ~]# ps
   PID TTY          TIME CMD
   976 pts/0    00:00:00 bash
  1431 pts/0    00:00:00 vim
  1451 pts/0    00:00:00 ps
[root@hjh ~]# ll /proc/1431/fd
total 0
lrwx------ 1 root root 64 Dec 28 15:10 0 -> /dev/pts/0  //标准输入
lrwx------ 1 root root 64 Dec 28 15:10 1 -> /dev/pts/0    //标准输出
lrwx------ 1 root root 64 Dec 28 15:09 2 -> /dev/pts/0    //错误输入
lrwx------ 1 root root 64 Dec 28 15:10 4 -> /etc/.passwd.swp    //让vim进入sleep状态后产生的交换文件。

/linux下查看标准输入输出设备
[root@hjh ~]# ll /dev/std*
lrwxrwxrwx 1 root root 15 Dec 28 12:01 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Dec 28 12:01 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Dec 28 12:01 /dev/stdout -> /proc/self/fd/1


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

2. 输出重定向

重定向:改变标准输入、标准输出的方向就是重定向

标准覆盖输出重定向        1>
标准追加输出重定向        1>>
错误覆盖输出重定向        2>
错误追加输出重定向        2>>
输入重定向               0<
  • 1
  • 2
  • 3
  • 4
  • 5
类型操作符用途
标准覆盖输出重定向>将命令的结果输出到文件中
标准追加输出重定向>>将命令的结果追加到文件中
标准输入重定向<<将命令中接受输入由键盘改为文件

注意: 覆盖输出或者追加输出的文件不存在,会自动建立。

合并文件内容可以这么操作:
比如要合并a文件和b文件到c文件
cat a b > c
  • 1
  • 2
  • 3

;代表命令命令依次执行 (cmd1;cmd2;cmd3)
||代表上一个命令如果返回为false怎么执行下面的命令
&& 上一个命令如果返回为ture则执行下面的命令
& 无论对错


[root@hjh ~]# rpm -q httpd  &> /dev/null || yum install -y httpd
//如果检查未安装httpd服务,则安装http服务

  • 1
  • 2
  • 3
  • 4

在脚本中使用重定向
在这里插入图片描述

3.输入重定向

标准输入 < 等价 0<

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

4. 进程管道技术

管道符号“ | ” 连接左右连个命令,将左侧的命令的标准输出,交给右侧命令的标准输入,
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. tee管道技术

在这里插入图片描述

在这里插入图片描述

重定向和tee

[root@hjh ~]# date > 1.txt
[root@hjh ~]# date |tee 1.txt
Wed Jan 15 14:12:59 CST 2020
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/213042
推荐阅读
相关标签
  

闽ICP备14008679号