Windows上是否有/ dev/null?

Ove*_*e S 401 windows

什么是/dev/nullWindows上的等价物?

Jon*_*eet 474

我想你想要NUL,至少在命令提示符或批处理文件中.

例如:

type c:\autoexec.bat > NUL
Run Code Online (Sandbox Code Playgroud)

不创建文件.

(我相信如果您尝试以编程方式创建文件也是如此,但我还没有尝试过.)

在PowerShell中,您需要$null:

echo 1 > $null
Run Code Online (Sandbox Code Playgroud)

  • @capthive:/dev/null.txt和/dev/null/foo.txt之间有区别. (20认同)
  • @CoDEmanX:那不是我的经历.写入控制台 - 甚至是文件 - 可能需要花费大量时间.我刚用一个程序写了"Hello there"来测试它到标准输出10000次.重定向到文件(在SSD上)需要18秒.重定向到NUL花了4秒钟.根本没有重定向让我在一段时间后因缺乏耐心而放弃...... (7认同)
  • 对于在Windows下寻找Unix"特殊"文件的人:[这里](http://www.ltr-data.se/opencode.html/#ZeroDrv)是`/ dev/random`和`/ dev/zero`设备Win32的驱动程序. (3认同)
  • 我只是再看一遍,然后收回原来的陈述.我正在编写代码,错误被吞噬了.我正在删除它,所以没有人不小心把它当作真相. (2认同)
  • 我在Win95时代学到过,您应该在特殊的设备名称后面写一个冒号,所以`NUL:`(和`CON:`,`PRN:`,...),主要是样式和显示问题显然,“ NUL:”是一个特殊对象,而不是名为“ NUL”的文件。同样,可以使用特殊的API来创建一个名为“ NUL”的文件(请参阅答案之一)。我梦想也许有一天,如果每个人都按惯例使用冒号,我们将可以弃用可怕的特殊设备名称:-) (2认同)

str*_*ger 62

根据GCC邮件列表中的消息,您可以使用文件"nul"而不是/ dev/null:

#include <stdio.h>

int main ()
{
    FILE* outfile = fopen ("/dev/null", "w");
    if (outfile == NULL)
    {
        fputs ("could not open '/dev/null'", stderr);
    }
    outfile = fopen ("nul", "w");
    if (outfile == NULL)
    {
        fputs ("could not open 'nul'", stderr);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(丹尼对此代码的信用;从他的消息中复制粘贴.)

您还可以通过重定向使用此特殊的"nul"文件.

  • 啊,所以这就解释了为什么,如果你在 Windows 中创建一个 `C:\dev` 目录,并且你使用了很多 GNU 实用程序,你最终会在该目录中获得一个名为 null 的神秘文件。 (4认同)

Jer*_*rry 44

NUL在Windows中似乎实际上是任何文件夹中的虚拟路径.就像..,.在任何文件系统.

使用NUL后面的任何文件夹都可以.

例,

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
Run Code Online (Sandbox Code Playgroud)

/dev/nullLinux上的效果相同.

这是在Windows 7,64位上测试的.

  • 很好,在Windows 7 64bit上创建一个名为"nul"的文件是不可能的:) (7认同)
  • @DawidFerenczy它是可能的,虽然不是经典的方式.例如`md \\.\ c:\nul` https://www.quora.com/Why-is-it-impossible-to-name-a-folder-in-Windows-with-the-word-con, http://www.gohacking.com/how-to-create-con-folder-in-windows/,http://superuser.com/questions/86999/unable-to-rename-a-folder-or-a -file-AS-CON (5认同)
  • 在 Windows 10 的 bash 中,第一个创建文件“nul” (2认同)

For*_*ker 34

Jon Skeet是对的.这是Windows Embedded文档中的Nul设备驱动程序页面(我不知道为什么它不在其他地方......).

这是另一个:

  • 当然Jon Skeet是对的.谢谢你陈述一个明显而普遍的真理:) (68认同)
  • 这里的 2 个链接现已损坏。:( (2认同)

小智 7

NUL以编程方式工作.例如以下内容:

freopen("NUL", "w", stderr);
Run Code Online (Sandbox Code Playgroud)

按预期工作而不创建文件.(MSVC++ 12.0)

  • 我认为这个答案为讨论增添了有益的贡献. (4认同)
  • 这个问题只需要用“NUL”来回答那么多次,而 5 年前就已经过去了。 (2认同)

Mar*_*rco 6

如果您需要在 Microsoft Windows 中执行相当于/dev/nullLinux中的符号链接,您可以打开管理员cmd并键入:

对于文件:

mklink c:\path\to\file.ext NUL:
Run Code Online (Sandbox Code Playgroud)

或者,对于目录:

mklink /D c:\path\to\dir NUL:
Run Code Online (Sandbox Code Playgroud)

这将使文件/目录始终保持在 0 字节,并且每次写入尝试仍然返回成功。