3

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

4

5 回答 5

1

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

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

您可能想阅读 wikipedia 以了解有关 javascript、DOM 和沙箱的更多信息。 http://en.wikipedia.org/wiki/JavaScript

于 2008-11-19T20:51:51.807 回答
1

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

于 2008-11-21T15:35:42.897 回答
1

在这个页面上寻找“system()” ,这应该是一个开始(对不起,我还没有真正使用过 SpiderMonkey。)

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

于 2008-11-19T21:10:35.293 回答
1

好吧,我现在感觉不那么愚蠢了。我使用 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_HAS_FILE_OBJECT=1标志重新编译 Spidermonkey 引擎,但它出错了,所以我有一些阅读和工作要做,但我认为我正朝着正确的方向前进。欢迎任何有关使用 javascript 执行此操作的不同方式的提示或建议(除了“使用 N”,其中 N = python、perl、java 等......)。

于 2008-11-20T02:32:55.533 回答
1

你可以用 node.js' 来做exec

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

# run node.js CLI
node

从此处找到的示例:

var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", puts);

这会输出一个目录列表。

于 2012-01-08T07:17:47.070 回答