黎庶涂炭网

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

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

文章目录

  • 重定向
    • >(重定向)和 >>(追加重定向)
    • 标准错误重定向
  • 管道
    • uniq(报告或忽略文件中重复的中的重定行)
    • wc(打印行数、字数和字节数)
    • grep(打印匹配项)
    • tee(从标准输入读取数据,向和并同时输出到标准输出和文件)

重定向

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

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

例如,向和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中的重定向和管道符