赞
踩
为什么要使用重定向
1.想要保存屏幕中要输出的信息
2.不想看到这个结果,想将他直接丢弃
3.或者要对信息做一个处理,以便于我们观察。
执行一个shell命令时通过会有三个过程,对应三个文件。
标准输入 (STDIN, 文件描述符为0) 通常对应终端的键盘,或者通过其他方式文件(比如文件内容)
标准输入 (STDOUT, 文件描述符为1) 默认输出到屏幕。
输入错误 (STDERR, 文件描述符为2)默认输入出到屏幕
文件名称 (filename, 文件描述符为3+)
进程在标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,将错误信息输入到错误文件中,进程使用文件描述符(file descriptor )来管理打开这些文件。
//查看一个进程的文件描述符
FD:
ll /proc/pid/fd
以 cat
命令为例,其功能就是读取命令后面输入的文件,将文件的内容送到标准输出。
如果cat
后面不跟任何东西,就是直接读取标准输入中的内容直接送到标准输出。
[root@hjh ~]# cat
1 //输入 1
1 //打印 1
2
2
3
3
[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>
标准追加输出重定向 1>>
错误覆盖输出重定向 2>
错误追加输出重定向 2>>
输入重定向 0<
类型 | 操作符 | 用途 |
---|---|---|
标准覆盖输出重定向 | > | 将命令的结果输出到文件中 |
标准追加输出重定向 | >> | 将命令的结果追加到文件中 |
标准输入重定向 | << | 将命令中接受输入由键盘改为文件 |
注意: 覆盖输出或者追加输出的文件不存在,会自动建立。
合并文件内容可以这么操作:
比如要合并a文件和b文件到c文件
cat a b > c
;
代表命令命令依次执行 (cmd1;cmd2;cmd3)
||
代表上一个命令如果返回为false怎么执行下面的命令
&&
上一个命令如果返回为ture则执行下面的命令
&
无论对错
[root@hjh ~]# rpm -q httpd &> /dev/null || yum install -y httpd
//如果检查未安装httpd服务,则安装http服务
在脚本中使用重定向
标准输入 < 等价 0<
管道符号“ | ” 连接左右连个命令,将左侧的命令的标准输出,交给右侧命令的标准输入,
重定向和tee
[root@hjh ~]# date > 1.txt
[root@hjh ~]# date |tee 1.txt
Wed Jan 15 14:12:59 CST 2020
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。