ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux系列之重定向操作

2022-08-07 12:03:00  阅读:228  来源: 互联网

标签:bin 文件 系列 重定向 ls stderr Linux txt


前言

I/O重定向允许我们将命令的输入和输出重定向到文件中,以及将多个命令连接到一起成为管道。本文就来介绍有关重定向的知识。

标准输入、输出、错误

输出包括两种类型:

  • 程序的结果。被称为标准输出或者stdout
  • 状态以及错误信息。被称为标准错误或者stderr

除此之外,一些程序从标准输入stdin中获取输入。默认情况下,标准输入与键盘相连接。

默认情况下,stdoutstderr 都被链接到屏幕上,而不是保存到文件中。重定向允许我们改变输出的去向和输入的来源。

重定向标准输出

为了重定向到其他文件而不是屏幕上,我们使用>重定向操作符,后面跟随文件的名称。

举例来说,我们可以使用重定向操作符来告诉shell,发送ls命令的输出到ls-output.txt文件中,而不是屏幕上。

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

image.png

我们可以看到,ls命令的输出没有发送到屏幕上,而是发送ls-output.txt到文件中。

需要注意的是,使用>重定向操作符会覆盖目标文件。如果要追加内容,我们可以使用>>重定向操作符。

重定向标准错误

为了重定向stderr,我们必须引用其文件描述符。shellstdoutstdinstderr分别作为文件描述符0、1和2的内部引用。我们可以用这个符号重定向stderr

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

重定向到同一文件

重定向标准输出和标准错误到同一文件中,共有两种方式可以实现。首先让我们使用传统方法,它适用于老版本的shell

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

首先,我们将stdout重定向到ls-output.txt文件,然后用2>&1的符号将文件描述符2 stderr重定向到文件描述符1 stdout 中。

需要注意重定向的顺序,重定向stderr必须总是在重定向stdout之后发生。

最近版本的bash提供了第二种方法,该方法让执行这种组合重定向更精简。

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

你仍然可以使用>>进行追加操作。

处理不需要的输出

系统提供了一种方法,可以将输出重定向到一个叫做/dev/null的特殊文件,该文件通常被称为比特桶(bit bucket)。它接受输入,但不做任何处理。

ls -l /bin/usr 2> /dev/null

重定向标准输入

还有< 重定向操作符,我们可以将stdin的来源从键盘改为文件。

cat < sample.txt

管道

使用管道操作符| ,一个命令的stout可以通过管道进入另一个命令的stdinless就是一个例子:

ls -l /usr/bin | less

可以把几个命令放在一起,组成一个流水线。使用这种方式的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。

tee命令

tee命令读取stdin并将其复制到stdout和一个或多个文件中。

ls /usr/bin | tee ls.txt | grep zip

image.png

标签:bin,文件,系列,重定向,ls,stderr,Linux,txt
来源: https://www.cnblogs.com/chuckQu/p/16558771.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有