【发布时间】:2014-10-15 17:53:57
【问题描述】:
在 Windows 上,可以使用> NUL 将管道重定向到空。在 Linux 上,使用> /dev/null。是否有跨平台兼容的方式将管道重定向到两个平台的空?换句话说,我可以使用它而不必担心命令在哪个平台上执行。
例如,我希望能够将以下命令写成一个命令。
echo Hello > NUL
echo Hello > /dev/null
当然,任何更复杂的事情都需要单独的脚本。用例是从跨平台语言(例如 Java、Python)执行的单个命令。我想避免必须检测平台,而是使用通用解决方案。
此外,该用例将访问 100 台机器,安装将比简单地检测平台和调整命令更复杂。
【问题讨论】:
-
if (windows) { > NUL } else { > /dev/null } -
我看不出这有什么用...这不是
sh和cmd.exe之间的唯一区别,无论如何你都必须编写单独的脚本这更进一步“启动此命令”。 -
您可以编写一个适当重定向的 shell 函数/doskey 宏,然后执行
tonull echo Hello之类的操作。尽管 Matteo 的观点很扎实——这很难用于任何现实的事情。您可以获取 cygwin 并在 Windows 上运行 shell 脚本。 -
@MatteoItalia 这是使我的 NPM 脚本完全跨平台(以抑制一些嘈杂的日志记录)所需的最后一件事。所以是的,这很有用。
-
我认为这是一个很好的问题,但不幸的是,对我们来说,答案似乎是没有这样的跨平台方式...... :(
标签: linux windows command-line io-redirection