• 使用重定向


    使用重定向

    有时我们希望将程序的输出信息保存到文件中, 方便以后查看. 例如你编译了一个程序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的计时结果, 方便又整洁.

  • 相关阅读:
    【解决问题】---- 解决 avue-crud 表格勾选数据翻页后界面保持选中
    千耘导航助力冬小麦抢种,农户节本增效待丰收
    vscode launch.json
    排序和RMQ
    业务实战记录(2):流失率统计逻辑误区
    Linux学习笔记
    CMakeList整理大全
    颜色直方图图像检索
    Linux学习笔记——修改文件的所有者和所有组
    2021年全球最具吸引力的雇主:谷歌、微软、苹果占据前三名
  • 原文地址:https://blog.csdn.net/qianniuwei321/article/details/126671982