linux 重定向

wanggongzhen 2020-05-26

Unix 主题任何东西都是一个文件保持一致,程序,比方说 ls,实际上把他们的运行结果 输送到一个叫做标准输出的特殊文件(经常用 stdout 表示),而它们的状态信息则送到另一个 叫做标准错误的文件(stderr)。默认情况下,标准输出和标准错误都连接到屏幕,而不是 保存到磁盘文件。除此之外,许多程序从一个叫做标准输入(stdin)的设备得到输入,默认情况下, 标准输入连接到键盘。

I/O 重定向允许我们更改输出地点和输入来源。一般地,输出送到屏幕,输入来自键盘, 但是通过 I/O 重定向,我们可以做出改变。

ls -l /usr/bin > output.txt     ls的结果输出到output.txt      >>将结果添加到output.txt后面

$ > output.txt    清空文件内容 或 创建空文件

cat   连接文件  读取若干个文件,复制它们到标准输出     可以显示文件而没有分页

经常被用来显示简短的文本文件,或者用来把文件连接在一起。

例如下载了一个大文件,被分离成a1  a2  a3...

cat  a*  >  b   就组合成了一个大文件     通配符总是按序展开

cat 回车    会从标准输入读取数据   按C-d表示到达文件结尾

cat  >  a.txt     从标准输入读取数据    将输出重定向到a.txt

cat  <  a.txt     重定向标准输入p

重定向标准错误缺乏专用的重定向操作符。为了重定向标准错误,我们必须参考其文件描述符。 一个程序可以在几个编号的文件流中的任一个上产生输出。虽然我们已经将这些文件流的前 三个称作标准输入、输出和错误,shell 内部分别将其称为文件描述符012shell 使用文件描述符提供 了一种表示法来重定向文件。因为标准错误和文件描述符2一样,我们用这种 表示法来重定向标准错误:

ls /bin/usr 2> 2.txt    重定向标准错误

ls /bin/usr 1> 1.txt 2> 2.txt   重定向标准输出和标准错误到不同文件

ls /bin/usr &> 12.txt    重定向标准输出和标准错误到同一文件

ls /bin/usr  > 1.txt 2>&1   同上,> 将文件描述符1 重定向到文件,

2>&1 将文件描述符2 重定向到文件描述符1

重定向到文件描述符,需在数字前加 &

ls -l /bin/usr 2> /dev/null    隐藏某些输出结果   /dev/null是一个专门设置的文件

接受输入     但不做任何处理

管道

一个命令的输出,可以通过管道,作为另一个命令的输入

ls -l /usr/bin | sort | uniq | less      排序 去重 显示

uniq -d 显示重复的行

wc a.txt  统计行数、单词数、字节数

ls /bin /usr/bin | sort | uniq | wc -l   -l选项只输出行数  可对其他命令的结果进行统计

grep    显示匹配的行  -i忽略大小写  -v只显示不匹配的行

head/tail  打印前/后若干行的内容   默认10行

tail  -n  5  a.txt  打印后5行     -f显示实时内容

ls /usr/bin | tail -n 5    在管道中使用

ls /usr/bin | tee ls.txt | grep zip     tee同时输出到标准输出和若干文件  

       可以跟踪管道的中间状态

相关推荐