我如何将node.js设置为bash的shell替换?例如,我应该能够运行vi('file')以打开文件并cd('location')在目录之间进行更改.
这甚至可能吗?
你当然可以!但是,使用计算机会变得不那么简单.
首先,您需要知道如何设置它.虽然您可以在Linux中设置用户shell usr/bin/node,但这将使您只使用Node.js REPL而无需设置其他程序.您要做的是编写一个安装脚本,可以为您执行以下所有设置/便利步骤,实质上是repl.start()在设置完所有内容后生成REPL的结果.当然,由于UNIX shell设置无法指定参数,因此您需要编写一个小型C程序,使用这些参数(本质上exec("/usr/bin/node", "path/to/setup/script.js");)执行shell,并将其设置为UNIX shell.
这里的主要思想是你require()在shell 之外使用的任何命令都必须进入你的shell - 例如对你的文件系统做任何事情,执行
var fs = require("fs")
Run Code Online (Sandbox Code Playgroud)
并从fs对象执行所有文件系统调用.这类似于向PATH添加内容.您可以通过使用shelljs或类似的方式获取基本的shell命令,并获取实际的可执行程序,使用Node的内置child_process.spawnSync任务作为前台任务或child_process.spawn后台任务.
由于您的部分要求是您想要将每个程序称为函数,因此您需要自己生成这些函数,得到如下函数:
function ls(path) {
child_process.spawnSync('/bin/ls', [path], { stdio: 'inherit' });
}
Run Code Online (Sandbox Code Playgroud)
对于你想要运行的一切.您可以通过迭代PATH中的所有条目并使用涉及的内容eval()或new Function()为每个条目生成执行函数,将它们分配给全局对象,以便您不必输入任何前缀来以编程方式执行此操作.
同样,尽管具有这些命名功能,但使用计算机将变得不那么简单.许多在后台作弊和使用bash命令的程序可能不再有效.但我当然可以看到能够在命令行环境中利用JavaScript的吸引力.
| 归档时间: |
|
| 查看次数: |
1532 次 |
| 最近记录: |