前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系列之重定向操作

Linux系列之重定向操作

作者头像
chuckQu
发布2022-09-20 11:41:12
1.2K0
发布2022-09-20 11:41:12
举报
文章被收录于专栏:前端F2E

前言

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

标准输入、输出、错误

输出包括两种类型:

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

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

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

重定向标准输出

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

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

代码语言:javascript
复制
ls -l /usr/bin > ls-output.txt

image.png

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

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

重定向标准错误

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

代码语言:javascript
复制
ls -l /bin/usr 2> ls-error.txt

重定向到同一文件

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

代码语言:javascript
复制
ls -l /bin/usr > ls-output.txt 2>&1

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

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

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

代码语言:javascript
复制
ls -l /bin/usr &> ls-output.txt

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

处理不需要的输出

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

代码语言:javascript
复制
ls -l /bin/usr 2> /dev/null

重定向标准输入

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

代码语言:javascript
复制
cat < sample.txt

管道

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

代码语言:javascript
复制
ls -l /usr/bin | less

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

tee命令

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

代码语言:javascript
复制
ls /usr/bin | tee ls.txt | grep zip

image.png

参考资料

[1]

https://www.madebygps.com/an-intro-to-redirection-in-linux/: https://www.madebygps.com/an-intro-to-redirection-in-linux/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 标准输入、输出、错误
  • 重定向标准输出
  • 重定向标准错误
  • 重定向到同一文件
  • 处理不需要的输出
  • 重定向标准输入
  • 管道
  • tee命令
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档