Linux - Linux中的重定向和管道符

Posted 1 + 1=王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux - Linux中的重定向和管道符相关的知识,希望对你有一定的参考价值。

文章目录

重定向

>(重定向)和 >>(追加重定向)

重定向就是把一个命令的输出保存到一个文件中,而不是直接输出到屏幕上。

例如,ls会将当前目录下的文件名输出到屏幕上:

使用重定向:

ls > /home/test/output.txt

那么,就会把ls在屏幕上输出的内容写到/home/test/output.txt(如果文件不存在会自动创建,但目录必须存在)文件中,屏幕上不会存在输出。

注意:

  1. 重定向“>”会自动创建新的文件,不需要提前touch;
  2. 重定向“>”会覆盖文件原本的内容。

如果重定向时,不想将原本的内容覆盖,可以使用重定向符“>>”来实现,他会将输出内容添加在文件的尾部,。如果这个文件并不 存在,将与操作符>的作用一样创建这个文件 。

标准错误重定向

所谓标准错误重定向就是把命令执行时的报错信息保存到一个文件中。

标准错误的重定向并不能简单地使用一个专用的重定向符来实现。一个程序可以把生成的输出内容发送到任意文件流中。如果把这些文件 流中的前三个分别对应标准输入文件、标准输出文件和标准错误文件, 那么shell将在内部用文件描述符分别索引它们为0、1和2。shell提供了 使用文件描述符编号来重定向文件的表示法。由于标准错误等同于文件 描述符2,所以可以使用这种表示法来重定向标准错误。

假设不存在/bin/usr目录
1. “2>”

ls /bin/usr 2> ls-error.txt

文件描述符“2”紧放在重定向符之前,将标准错误重定向到ls-error.txt文件中。
2. “2>&1”

ls /bin/usr > ls-output.txt 2>&1

执行两个重定向操作,首先重定向标准输出到ls- output.txt文件中,然后使用标记符2>&1把文件描述符2(标准错误)重 定向到文件描述符1(标准输出)中。
3. &>

ls /bin/usr &> ls-output.txt

表示把标准输出和标准错误都重 定向到了ls-output.txt文件中。

管道

命令从标准输入到读取数据,并将数据发送到标准输出的能力,是使用 了名为管道的shell特性。使用管道操作符“|”(竖线)可以把一个命令的 标准输出传送到另一个命令的标准输入中。

ls -l /usr/bin | less

这条命令就表示:输出/usr/bin下的所有文件和目录,并以翻页形式查看(less命令)。

下面介绍一些常用的支持管道符的命令。(less命令如上,不在重复)。

uniq(报告或忽略文件中重复的行)

uniq命令经常和sort命令结合使用。
uniq可以接受来自于标准输入或者一 个单一文件名参数对应的已排好序的数据列表。默认情况下,该命令删除列表中的所有重复行。因此,在管道中添加uniq命令,可以确保所有的列表都没有重复行。

ls /bin /usr/bin | sort | uniq | less

  • uniq -d:要查看重复行的列表

wc(打印行数、字数和字节数)

用来显示文件中包含的行数、字数和 字节数。

  • wc -l :限制命令只报告行数

grep(打印匹配项)

ls /bin | grep zip

这条命令表示:搜索出/bin目录下包含zip的所有文件。

  • grep -i:grep在搜索时忽略大小写;
  • grep -v:输出不匹配的行

tee(从标准输入读取数据,并同时输出到标准输出和文件)

tee命令读取标准输入,再把读到的内容复制到标准输出和一个或更多 的文件中去。

ls /bin | tee output.txt | grep zip

以上是关于Linux - Linux中的重定向和管道符的主要内容,如果未能解决你的问题,请参考以下文章

Linux重定向

24 shell 管道命令与过滤器

linux的重定向管道与环境变量PATH

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结