【问题标题】:Difference between cat filename and cat < filename in unixUnix中cat文件名和cat <文件名之间的区别
【发布时间】:2014-02-21 07:14:24
【问题描述】:

假设我有一个名为“file1”的文件。我想在 Unix 中使用cat 命令显示“file1”的内容。

cat file1cat &lt; file1 的工作方式类似。它们有什么区别?

【问题讨论】:

    标签: unix cat


    【解决方案1】:

    这是输入的来源。

    • 如果你说cat file1,shell 并没有做任何特别的事情。 cat 调用文件上的open(2) 并从中读取
    • 如果你说cat &lt; file1 shell 会在文件上调用open(2) 并将dup(2) 调用到STDIN_FILENO 中以获得catcat 只是从 STDIN_FILENO 读取

    【讨论】:

    • 你能告诉我这些 open(2),dup(2),STDIN_FILENO 是什么吗? @cnicutar
    • 这些是系统调用,并记录在手册页中。例如,当我说open(2) 时,我的意思是man 2 open,这是第2 节中open 的手动输入。
    【解决方案2】:

    我们可以使用另一个命令来注意两者之间的区别:

    wc –w food2.txt 
    

    可能的输出:

    6 food2.txt 
    

    该命令告诉文件名,因为它知道它(作为参数传递)。

    wc –w < food2.txt 
    

    可能的输出:

    6 
    

    标准输入被重定向到文件 food2.txt 而命令不知道它。

    【讨论】:

      【解决方案3】:

      cat 打开一个文件,cat &gt; fileName 告诉 shell 在 cat 标准输入中打开文件。

      这是一个包含更详细信息/答案的链接: https://unix.stackexchange.com/questions/258931/difference-between-cat-and-cat

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-16
        • 2010-12-21
        • 1970-01-01
        • 2014-09-16
        • 1970-01-01
        • 2020-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多