从node.js shell获取我的操作系统

如何从节点shell访问我的操作系统?

上下文:我正在写节点的脚本,我想用默认的程序打开一个文件,而且这样做的命令在不同的操作系统上有所不同。

我已经尝试了获取操作系统的标准JavaScript方法,但他们没有工作(由于显而易见的原因,节点中没有navigator器)。

有没有可能做到这一点,而不安装非标准模块?

警告 :这可能已经过时了

node.js中没有navigator对象,因为它不在浏览器中运行。 它在系统中运行。 导航器的“相当”是process 。 这个对象拥有许多信息,例如

 process.platform // linux 

如果你想运行一个网页浏览器,你必须执行它..

 var sys = require('sys') // open google in default browser // (at least in ubuntu-like systems) sys.exec('x-www-browser google.com') 

这可能不适用于新的node.js版本(我有2.x),你可能不得不使用

 var child_process = require('child_process') child_process.exec('x-www-browser google.com') 

我想有没有简单的方法如何多平台“运行”任何文件的“默认应用程序”,你将不得不找出如何在每个操作系统/桌面环境中做到这一点,并在操作系统检测后做到这一点。

现在有一个os模块: Node OS Module Docs 。 它具有获取平台os.platform

文档不提供返回值。 所以,我已经logging在下面。 结果分别是Ubuntu 12.04 64位,OS X 10.8.5,Windows 7 64位和Joyent SmartMachine。 在节点0.10上进行testing。

Linux的

  • os.type()'Linux'
  • os.platform()'linux'
  • os.arch()'x64'

OS X(Mac)

  • os.type()'Darwin'
  • os.platform()'darwin'
  • os.arch()'x64'

视窗

  • os.type()'Windows_NT'
  • os.platform()'win32'
  • os.arch()'x64'

SmartMachine

  • os.type()'SunOS'
  • os.platform()'sunos'
  • os.arch()'ia32'

注意:在Windows 7 64位节点上可能会错误地将os.arch()报告为ia32 。 这是一个logging错误: os.arch应该是操作系统的体系结构而不是进程

console.log('This platform is'+ process.platform);

你可以在http://nodejs.org/docs/v0.4.10/api/process.html#process.platformfind文档。

我在Mac OS X上用节点v0.4.10testing了这个

就像上面提到的那样使用os.platform

https://nodejs.org/api/os.html#os_os_platform

os.platform()

返回操作系统平台。 可能的值是“达尔文”,“freebsd”,“linux”,“sunos”或“win32”。 返回process.platform的值。