Windows确实有一个空设备的概念,例如这里或这里详细介绍的。我能找到的所有例子都是关于重定向流的。
在将脚本从Linux移植到Windows时,我遇到了一些奇怪的事情:如果nul
像文件一样打开,我会对它进行写入、关闭、重新打开并读回数据。有时在检查工作目录时,我可以看到一个名为nul
的文件正在创建,并在向其写入数据时不断增长。具有讽刺意味的是,我无法从资源管理器中删除它,只能从命令行中删除。
如今,Windows 10自带OpenSSH的原生实现。我想用一个老技巧:当它在寻找known_hosts
文件时,我想把它指向一个空设备。在Linux上,它看起来如下:ssh -o UserKnownHostsFile=/dev/null user@host
。在Windows上,我对它进行了如下测试:ssh -o UserKnownHostsFile=nul user@host
。我得到了一个名为nul
的文件,其中包含主机。我还尝试了NUL
、null
和NULL
,结果相同。尝试指向DeviceNull
或/Device/Null
会导致ssh
抱怨找不到/打开这些文件。
如何在Windows(10(上正确使用和/或指向空设备?
JS群组有一个解决方案:我需要指向\.NUL
。这显然是空设备的实际名称或路径。
我正在做的是创建一个文件C:Usersmyself.sshconfig
(就像在Linux上一样(,其中包括:
# Don't save local computers to known_hosts
Host localhost 127.?*.?*.?* *.local 10.?*.?*.?* 192.168.?*.?* 172.16.?*.?* 172.17.?*.?* 172.18.?*.?* 172.19.?*.?* 172.2?.?* 172.30.?*.?* 172.31.?*.?*
StrictHostKeyChecking no
UserKnownHostsFile=\.NUL
这与大多数IPv4内容/任何被视为专用网络的内容相匹配。在家里这样做,但不要在你的公司网络中这样做——因为原因。