菜单导航

输入输出重定向、多命令执行和管道符

作者: 精装之家 来源: 精装之家 发布时间: 2019年10月10日 09:09:48

键盘:设备文件名/dev/stdin,文件描述符为0,类型为标注输入

显示器:设备文件名/dev/sdtout,文件描述符为1,类型为标准输出,

显示器:设备文件/dev/sdterr,文件描述符为2,类型为标准错误输出。

输出重定向:

输出本来是应该输出到屏幕上命令行显示的,现在改变他的输出方向输出到文件或其他设备当中。

标准输出重定向:

命令>文件,以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。

命令>>文件,已追加的方式吧命令的正确输出输出到指定的文件或设备中。

不是所有的命令都可以使用输出重定向,这个命令必须得有输出才可以,否则就没有任何意义。

标注错误输出重定向:

错误命令 2>文件,已覆盖的方式吧命令的错误输出输出到指定的文件或设备中

错误命令 2>>文件,以追加的方式,把命令的错误输出输出到指定的文件或设备中。

linux之shell基础-输入输出重定向、多命令执行和管道符

linux之shell基础-输入输出重定向、多命令执行和管道符

在实际的应用中,上面的写法有一定问题,因为我们编写的时候并不能确定我们写的是正确的还是错误的,也就无法确定写入正确的文件还是错误的文件,因此这里仅作了解,用处不大。

正确输出和错误输出同时保存:

命令>文件2>&1:以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中,

命令>>文件2>&1:以追加的方式,把正确输出和错误输出都保存到同一个文件当中,

命令&>文件:以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中,

命令&>>文件:以追加的方式,把正确输出和错误输出都保存到同一个文件当中,

命令>>文件1 2>>文件2: 把正确的输出追加到文件1中,把错误的输出追加到文件2中,

一个特殊用法:命令 &> /dev/null:将输出丢到垃圾箱,相当于不输出到任何地方,

输入重定向:

本来我们执行某些命令的参数应该是手工来写的,现在改变它的输入方向,不再通过键盘输入,而是通过文件作为它的输入,输入重定向在实际中用的不多,一般只在为源码包打补丁的时候用到,用的很少。

以wc命令举例:

#wc [选项] [文件名]

-c 统计字节数

-w 统计单词数

-l 统计行数

# wc < file

# wc -l < file

多命令顺序执行:

多命令执行符:

;(分号):格式:命令1;命令2,多个命令顺序执行,命令之间没有任何逻辑联系;

&&:命令1&&命令2,逻辑与,当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行,

||:命令1||命令2,逻辑或,当命令1执行不正确,则命令2才会执行,当命令1正确执行,则命令2不会执行。

可用【命令 && echo yes || echo no 】来判断所写的命令是否正确;

管道符:# 命令1 | 命令2,命令1的正确输出作为命令2的操作对象;

# ll -a /etc/ | more

# netstat -an | grep "ESTABLISHED"

# grep [选项] "搜索内容"

-i:忽略大小写

-n:输出行号

-v:反向查找

--color=auto:搜索出的关键字用颜色显示

linux之shell基础-输入输出重定向、多命令执行和管道符