【问题标题】:How does the Windows command type workWindows 命令类型如何工作
【发布时间】:2017-12-17 05:39:46
【问题描述】:

所以我认为 Linux 中的“cat”实际上将文件连接为 2 块内存(希望如此)。我担心的是 Windows 中的“类型”命令,从名称来看,我相信它可能会读取文件并将其写入新文件。我不知道如果这样做需要多少时间。

这是它的使用方式(就像 cat 它将两个文件合并到输出文件一样):

输入 file_name1.txt file_name2.txt >> out.txt

【问题讨论】:

  • 合并两个文件,也可以使用copy file_name1.txt + file_name2.txt out.txt;要附加到输出文件,只需执行 copy out.txt + file_name1.txt + file_name2.txt out.txt...
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 会是一个更好的提问地点。

标签: linux windows cmd command


【解决方案1】:

没有。 Linux 中的cat 通过读取命令行中的所有文件并将它们写入标准输出来工作。如果命令行为空,它将读取标准输入。

所以当你运行时:

cat file1 file2 >> file3

它读取file1 并将其写入stdout。完成后,它会读取file2 并将其写入stdout。但是,啊!,shell 已将stdout 重定向到附加到file3,所以这就是写入两个文件的地方。

type在Windows中的工作方式基本相同,只是命令行不能为空(可以使用copy CON)。

现在,Linux 中的cat 命令可能会进行一些优化,以避免内存中的数据副本过多,例如splice(2),但这应该被视为可选优化。

【讨论】:

    【解决方案2】:

    与 Linux 猫一样,Windows cmd.exe shell 类型命令将读取这两个文件并将它们写入标准输出。

    与Linux cat 不同,它会通过stderr 添加文件名头。如果你想要同样的效果,一定要重定向stderr。

    type file1.txt file2.txt 2>NUL
    

    而且,如果您想重定向标准输出,请务必在重定向标准错误之前执行此操作。

    type file1.txt file2.txt >newfile.txt 2>NUL
    

    【讨论】:

    • STDERR 之前重定向 STDOUT 或反之亦然;该顺序仅与redirection operators like 2>&1 相关(因此当重定向的句柄相互依赖时)。要将多个文件写入一个文件,实际上您甚至不需要将STDERR 重定向到NUL,因为它无论如何都不会写入文件;虽然它可能会在控制台上令人不安......
    猜你喜欢
    • 2023-03-31
    • 2019-02-23
    • 2011-08-11
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2016-06-09
    相关资源
    最近更新 更多