一、预备知识:
最常见的文件描述符是stdin标准输入、stdout标准输出和stderr标准错误。
二、练习
ls + > out.txt
只输出到了屏幕上哦~~~
ls + 2> out.txt
这样就将2的标准错误输出到了文件哦
cmd 2>stderr.txt 1>stdout.txt
这样的咧,错误进stderr,标准输出到stdout
cmd 2>&1 output.txt
或者咧
cmd &> output.txt
上面的两个例子是把标准输出和错误都放到一个里面
也可以将错误的输出放入到/dev/null里面,是个大黑洞奥。
如何剔除已经预料到的错误信息呢。比如当前目录下有a1.txt a2.txt a3.txt ,但是咧,a1的我们当前的用户没有权限查看。
cat的时候,会产生一个错误的信息。要是想剔除错误的信息呢。
cat a* 2> err.txt
这样呢,错误的信息就不会显示出来了啦,啊哈哈哈~~
tee命令的使用方法。
下面的例子中呢,tee接受来自stdin的数据,它将stdout的一份副本写入文件out.txt。
同时呢,又将另一份副本作为后续命令的stdin。就是两步的操作
命令cat -n将从stdin中接受到每一行数据前加上行号,并写入stdout:
cat a*| tee out.txt | cat -n
tee命令只能从标准输入进行读取奥~~~
同时还要注意的是tee命令一般都是覆盖源文件的,但是-a参数可以变成追加的样子奥。
root@ubuntu:~# echo sdfsdfkjsndfjsndf | tee
sdfsdfkjsndfjsndf
root@ubuntu:~# echo sdfsdfkjsndfjsndf | tee -
sdfsdfkjsndfjsndf
sdfsdfkjsndfjsndf
自己感受一下上面的例子,加上-就会认为之前的输出为新的标准输入奥
1、将文件重定向到命令
$ cmd < file
2、重定向脚本内部的文本块
向log文件中写入头部数据,可以按照下面的方法完成:
#!/bin/bash
cat <
log.txt
LOG FILE HEADER
WO cai dao le kai tou
QUE cai bu dao jie wei
EOF
脚本中cat <log.txt 与下面的EOF中的所有文本文件,都会被当做标准输入的数据奥,啊哈哈哈
3、自定义文件描述符
< 操作符用于从文件中读取至标准输入
> 操作符用于阶段魔术的文件写入(数据在目标文件内容被截断之后写入)
>> 操作符用于追加模式的文件写入
阅读(1455) | 评论(0) | 转发(0) |