从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的值。