我面临一个独特的问题,需要使用Node迭代几个类Unix命令,并查看它们是否存在于Windows安装的
例如,Windows不支持ls。 但是,假设有人安装了git并选中包含Unix命令,则可以使用ls。
我需要知道系统
目前,我正在使用child_process在每个命令上运行帮助(help)。 然后检查运行它的响应。 这非常混乱且危险。 我不想从Node运行30个任意命令:
var spawnSync = require('child_process').spawnSync;
var out = spawnSync('ls', ['/?'], {encoding: 'utf8'});
我还能用什么方式检查这些命令是否存在?
require('os').platform().indexOf('win') > -1
在 Node 中可行。 - dthreewhere
,Ubuntu 则有whereis
,同样的东西,不同的名称。再次强调,没有一种方法适用于所有情况。 - adeneowhere dir
不起作用,但where cmd
起作用,因为后者是一个可在 Windows 等全局调用的可执行文件 (cmd.exe)。如果有人将ls
添加到 Windows 中,他们肯定添加了一个可执行文件,所以理论上应该可以工作? - adeneo