Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript(spidermonkey)如何从jsshell运行linux命令?_Javascript_Server Side - Fatal编程技术网

javascript(spidermonkey)如何从jsshell运行linux命令?

javascript(spidermonkey)如何从jsshell运行linux命令?,javascript,server-side,Javascript,Server Side,我被难住了,觉得自己很愚蠢。我尝试了我能想到的所有搜索组合来解决这个问题。这看起来很简单,但作为javascript新手,我在搜索示例或演示时没有看到任何有用的东西。 我希望使用类似python或perl脚本的脚本来运行简单的linux命令。解释器已启动并正在运行,因此我正在寻找服务器端js资源,以帮助您了解更多关于js的信息。如果我想在浏览器中做这类事情,我发现了很多有用的例子,但我不想使用浏览器。 我在网站上找不到这样的查询(尽管我肯定我没有问正确的方法),因此如果这确实是一篇多余的帖子,请

我被难住了,觉得自己很愚蠢。我尝试了我能想到的所有搜索组合来解决这个问题。这看起来很简单,但作为javascript新手,我在搜索示例或演示时没有看到任何有用的东西。 我希望使用类似python或perl脚本的脚本来运行简单的linux命令。解释器已启动并正在运行,因此我正在寻找服务器端js资源,以帮助您了解更多关于js的信息。如果我想在浏览器中做这类事情,我发现了很多有用的例子,但我不想使用浏览器。
我在网站上找不到这样的查询(尽管我肯定我没有问正确的方法),因此如果这确实是一篇多余的帖子,请随意关闭并为我指出正确的方向。

除了浏览器之外,您无法访问系统。无论是Windows还是Linux,您的“js外壳”都是沙盒式的。除浏览器外,无法访问文件系统或任何应用程序。JS是一种由浏览器解释的脚本语言

您可以访问浏览器之外的世界,但只能在IE上使用ActiveX,但这是在沙箱之外,不再是纯javascript。如果你搜索论坛,你将找不到关于javascript文件访问的文档,没有ActiveX。ActiveX在Linux或Firefox上不可用

您可能想阅读维基百科,了解更多关于javascript、DOM和沙箱的信息。

在上查找“system()”,这应该是一个开始(对不起,我还没有实际使用SpiderMonkey。)


我想如果你能编译他们的JSNative函数myjs_system(),你就可以在你的JavaScript代码中调用它。

好吧,我现在感觉不那么愚蠢了。我使用Jscript和Windows上.NET Framework附带的jsc.exe使其正常工作:

> var myFileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
> 
> var pathToFileDir = ".";
> var myFolder = myFileSystemObj.GetFolder(pathToFileDir);
> 
> var myEnum = new
> Enumerator(myFolder.Files);
> 
> for
> (;!myEnum.atEnd();myEnum.moveNext()) {
>   print(myEnum.item()) }
这给了我一个目录中的文件名,在ol'XP上非常简单。 所以我想问题应该是,在Linux上有没有类似的工具来实现这一点?
我试图用
JS\u HAS\u FILE\u OBJECT=1
标志重新编译Spidermonkey引擎,但它出错了,所以我有一些阅读和工作要做,以使其工作,但我认为我的方向是正确的。任何关于使用javascript实现这一点的不同方法的提示或建议都是受欢迎的(除了“使用N”之外,其中N=python、perl、java等…。

对于linux,我发现它具有现成的文件支持。它让我做我想做的事。我仍然会尝试使用File_Object标志编译spidermonkey,因为我很固执,但到目前为止,我向想要尝试服务器端javascript的程序员推荐EJScript并没有问题

您可以使用node.js'
exec
来完成

# install node.js (debian/ubuntu)
sudo apt-get install nodejs

# run node.js CLI
node
从一个例子中可以发现:


这将输出一个目录列表。

服务器端JavaScript是一个不同的beast,IIRC与Netscape glory days不同……JavaScript可能会耗尽浏览器!查看Windows的WSH及其JavaScript和VBScript解释器,两者都具有完全的系统访问权限。谢谢GGG。在您离开一年多后,我终于看到了这一点,但如果我的问题时间不同,我可能会选择这一点作为公认的答案(与ejscript相比,我最近非常频繁地使用node)。
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", puts);