• 使用重定向


    使用重定向

    有时我们希望将程序的输出信息保存到文件中, 方便以后查看. 例如你编译了一个程序myprog, 你可以使用以下命令对myprog进行反汇编, 并将反汇编的结果保存到output文件中:

    objdump -d myprog > output
    

    >是标准输出重定向符号, 可以将前一命令的输出重定向到文件output中. 这样, 你就可以使用文本编辑工具查看output了.

    但你会发现, 使用了输出重定向之后, 屏幕上就不会显示myprog输出的任何信息. 如果你希望输出到文件的同时也输出到屏幕上, 你可以使用tee命令:

    objdump -d myprog | tee output
    

    使用输出重定向还能很方便地实现一些常用的功能, 例如

    1. > empty # 创建一个名为empty的空文件
    2. cat old_file > new_file # 将文件old_file复制一份, 新文件名为new_file

    如果myprog需要从键盘上读入大量数据(例如一个图的拓扑结构), 当你需要反复对myprog进行测试的时候, 你需要多次键入大量相同的数据. 为了避免这种无意义的重复键入, 你可以使用以下命令:

    ./myprog < data
    

    <是标准输入重定向符号, 可以将前一命令的输入重定向到文件data中. 这样, 你只需要将myprog读入的数据一次性输入到文件data中, myprog就会从文件data中读入数据, 节省了大量的时间.

    下面给出了一个综合使用重定向的例子:

    time ./myprog < data | tee output
    

    这个命令在运行myprog的同时, 指定其从文件data中读入数据, 并将其输出信息打印到屏幕和文件output中. time工具记录了这一过程所消耗的时间, 最后你会在屏幕上看到myprog运行所需要的时间. 如果你只关心myprog的运行时间, 你可以使用以下命令将myprog的输出过滤掉:

    time ./myprog < data > /dev/null
    

    /dev/null是一个特殊的文件, 任何试图输出到它的信息都会被丢弃, 你能想到这是怎么实现的吗? 总之, 上面的命令将myprog的输出过滤掉, 保留了time的计时结果, 方便又整洁.

  • 相关阅读:
    强化学习从基础到进阶-案例与实践[4.2]:深度Q网络DQN-Cart pole游戏展示
    时序异常检测汇总
    JavaWeb三层架构
    【补题日记】[2022杭电暑期多校3]K-Taxi
    [Ant Design Vue 树控件Tree]内存溢出报错
    6 个意想不到的 JavaScript 问题
    全栈自动化测试之python基础类的自定义属性访问及动态属性设置
    arthas热更新线上代码实操记录
    Deformable Attention学习笔记
    今日ac题
  • 原文地址:https://blog.csdn.net/qianniuwei321/article/details/126671982