Chinaunix首页 | 论坛 | 博客
  • 博客访问: 700297
  • 博文数量: 108
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1436
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-31 09:49
文章分类
文章存档

2019年(16)

2015年(2)

2014年(20)

2013年(70)

我的朋友

分类: LINUX

2013-11-29 16:52:06

一、预备知识:
最常见的文件描述符是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、自定义文件描述符
< 操作符用于从文件中读取至标准输入
> 操作符用于阶段魔术的文件写入(数据在目标文件内容被截断之后写入)
>> 操作符用于追加模式的文件写入


阅读(1451) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~