• Linux系列之重定向操作


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    前言

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

    标准输入、输出、错误

    输出包括两种类型:

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

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

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

    重定向标准输出

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

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZ6IFWB1-1659846932577)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/74c404ae73a947fa93526b99e10f4062~tplv-k3u1fbpfcp-watermark.image?)]

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

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

    重定向标准错误

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

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

    重定向到同一文件

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

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

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

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

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

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

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

    处理不需要的输出

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

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

    重定向标准输入

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

    cat < sample.txt
    
    
    • 1
    • 2

    管道

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

    ls -l /usr/bin | less
    
    
    • 1
    • 2

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

    tee命令

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

    ls /usr/bin | tee ls.txt | grep zip
    
    
    • 1
    • 2

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nc9ZWd7e-1659846932582)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c03d5dbc8e0740d996c92c6610f3ce9c~tplv-k3u1fbpfcp-watermark.image?)]

  • 相关阅读:
    阿里面试官问我Redis该如何内存优化,这不有手就行?
    模拟微信小程序加载动画
    独立产品灵感周刊 DecoHack #025 – 如何找到一个新爱好
    如何实现 Python Switch Case 语句?
    分销系统功能有哪些?好的分销比例如何设定?
    java 大厂面试指南:性能优化 + 微服务 + 并发编程 + 开源框架 + 分布式
    fastadmin中api模块自动validate验证参数
    丹青映画董事长唐丹青于元宇宙产业资源对接会上进行精彩演讲
    C++语言之组合、聚合类间关系
    Docker-minio部署
  • 原文地址:https://blog.csdn.net/u013190417/article/details/126209353