重定向
I/O重定向允许我们更改输出地点和输入来源
>
重定向符后接文件名将标准输出重定向到一个文件,目标文件总是从开头被重写
注:清空文件技巧> ls-output.txt
>>
操作符,将输出结果添加到文件内容之后
2>
执行重定向标准错误到文件
<
标准输入重定向
# 重定向标准输出和错误到同一个文件
- 传统的方法,在旧版本shell中也有效:
ls > ls-output.txt 2>&1
- 现在的bash版本提供了第二种方法,更精简合理
ls &> ls-output.txt
注:重定向输出结果到一个叫做“/dev/null”的特殊文件,处理不需要的输出。这个文件是系统设备,叫做位存储桶
相关命令
cat
命令读取一个或多个文件到标准输出;相似于 DOS中的 TYPE命令
-
cat movie.mpeg.0* > movie.mpeg
因为通配符总是以有序的方式展开,所以这些参数会以正确顺序安排 -
cat没有给出任何参数,它会从标准输入读入数据,ctrl-d 结束输入
-
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
注:在shell中,ctrl-d表示推出当前shell.
sort
-排序文本行
ls /bin /usr/bin | sort | less
是 sort过滤器
uniq
省略重复行
- uniq命令经常和sort命令结合在一起使用
ls /bin /usr/bin | sort | uniq | less
使用uniq从sort命令的输出结果中,来删除重复行ls /bin /usr/bin | sort | uniq -d | less
带上“-d”选项看到重复的数据列表
grep
-打印匹配行
- “-i”使得grep在执行搜索时忽略大小写(通常,搜索是大小写敏感的),
- “-v”选项会告诉grep只打印不匹配的行
wc
-打印文件中换行符(行数),字,和字节个数
ls /bin /usr/bin | sort | uniq | wc -l
查看我们的有序列表中程序个数
head
输出文件第一部分 10行
tail
输出文件最后一部分 10行
tail -f
“-f”选项,tail命令动态监测这个文件
tee
-从标准输入读取数据,并同时写到标准输出和文件
ls /usr/bin | tee ls.txt | grep zip
当在某个中间处理阶段来捕捉一个管道线的内容时
ls -l /usr/bin | less
这极其方便!使用这项技术,我们可以方便地检测会产生标准输出的任一命令的运行结果