Bash的标准输入设备是键盘、鼠标、手写板等设备,标准输入设备为显示器
一般我们通过键盘输入命令并执行,系统将返回信息显示在屏幕上,默认不管是正确的还是错误的信息,都将输出至显示器。
标准输入为0,标准输入为1,错误输出为2
管道符 | : 可以将多条命令连接在一起使用,把一个命令的标准输出作为另一个命令的标准输入
ifconfig eth0 | grep “inet addr” 过滤含IP地址的行
echo “pass” | passwd --stdin root 设置root密码为pass
重定向(<、>、<<、>>):
> 将正确输出覆盖至文件 >> 将正确输出追加至文件
2> 或2>> 将错误输出副高或追加至文件
&> 将正确输出和错误输出导入到文件里
2>&1 将正确输入和错误输出导入到文件
mail -s test xx@gmail.com < list.txt 发一封主题为test,内容为list.txt里的内容,接收人为xx@gmail.com的邮件。
ls -l abc install.log #install.log存在,abc不存在
ls -l abc install.log 2> error.txt 只将错误信息导入文件里
ls -l abc install.log > correct.txt 只将正确信息导入文件里
ls -l abc install.log &> all.txt 不管是正确信息和错误信息都导入到文件里
ls -l abc install.log >> all 2>&1 不管是正确信息和错误信息都追加至文件里
重定向使用技巧:
1.修改20个账户密码,要显示20个成功的提示信息,然而大量成功提示信息对于我们而言是无意义的信息,要将其
屏蔽,让错误信息显示出来
/dev/null,这个特殊设备就像太阳黑洞,任何让里面写入都将永远消失,无意义的信息都可以导入到/dev/null设备里
echo "pass" | passwd --stdin root >> /dev/null
2.在深夜里,很多服务器负载最低时,开始执行计划任务脚本,白天,管理员会查看那些命令执行成功,那些命令出了问题,可以将正确输出与
错误输出保存到两个不同的文件。
id tom >> user 2>> error
判断tom用户是否存在,存在把用户信息导入到user文件里,不存在把错误信息导入至error文件里
tee
双向重导向
重定向会将数据流整个传送给文件,因此我们除非去读取该文件,否则就无法利用这个数据流,而双向重定向tee会利用这个数据流
tee会同时将数据流分送到文件去与屏幕(screen);而输出到屏幕的,其实就是stdout,
tee
-a file 以累加(append)的方式,将数据加入file当中!
[root@www ~] last | tee last.list | cut -d " " -f1
[root@www ~] ls -l /home | tee ~/homefile | more
[root@www ~] ls -l / | tee -a ~/homefile | more
tee 后接的文件会被覆盖,若加上-a这个选项则能将信息累加