Tag: shell

如何获得Node.JS中产生的child_process的输出?

首先,我是一个完整的noob,昨天开始使用Node.JS(这也是我第一次使用Linux在几年),所以请不错,明确 我目前正在做一个Node.JS程序,其中包括启动shell命令(主要是:挂载一个USB驱动器)。 我目前正在使用 var spawn = require('child_process').spawnSync; function shspawn(command) { spawn('sh', ['-c', command], { stdio: 'inherit' }); } shspawn('echo Hello world'); shspawn('mkdir newdir'); 等等,这对我来说是一个非常舒适的方式。 问题是,我想存储的输出,例如,一个“ls”命令在一个variables,像 var result = shspawn('ls -l') 我已经在网上阅读了一些例子,但很less使用产卵,当他们这样做时,它不适用于我(我想我可能做错了什么,但我又是一个在节点noob) 如果你们有比使用child_process_spawnSync更好的主意,我打开任何想法,但我希望尽可能长时间保持我的程序包免费:) 编辑:我需要它同步工作! 这就是为什么我开始使用spawnSync。 我将使用一些像dd这样的命令,这需要时间,并且在程序移动到另一个命令之前需要完全完成。

有没有办法在Node.js shell中运行JavaScript文件?

我是Node.js新手,我想知道是否有从Node shell内部执行JavaScript文件的方法。 让我这样解释: 而不是这样做: $ node file.js 这将执行脚本,但会closures节点壳后… 是否有执行已经在Node shell内的脚本的方法? 就像是: $ node > file.js # We're now inside the Node.js shell … script execution… > # already inside the shell, # then being able to access to script variables

你如何从命令行pipe道脚本到NodeJs?

从命令行,我想从我的粘贴板(FYI:pbpaste是一个OSXfunction)采取脚本,并将其pipe道到节点的repl命令行工具。 例如: pbpaste | node -e 这不会评估我的剪贴板中的内容。 我如何获得运行时间来做到这一点?

用节点改变当前目录

我正在尝试在node.js中编写一个命令行实用程序。 作为其中的一个function,它应该改变它被调用的shell的当前工作目录。 类似于cd node.js版本。 有没有可能做到这一点? 如果是这样,怎么样? 为了澄清,我希望能够通过运行脚本来改变terminal窗口中的当前目录。 /some/path> … /some/path> nodecd /other/path /other/path> … 问题是process.chdir()适用于SCRIPT目录,而不适用于SHELL目录。 我需要能够以某种方式将当前shell通过bash调用传递给节点脚本,并在脚本中更改该shell的path – 创build子shell不会解决问题。

在Emacs的nodejs模式下得到垃圾提示

我在Emacs 24上使用nodejs-mode ,但是当我input: Mx nodejs 它提示垃圾提示像[0J> ,现在即使我已经在下面添加了 (setq ansi-color-for-comint-mode t) 在emacs文件中。 它仍然不起作用。 所有相同的,如果我在Emacs shell-mode上键入node目录,那么我会得到一个更恼人的提示,如下所示: ryu@ryu:~$ node [1G[0J> [3G 有没有人知道为什么这样做?

节点js与shell应用程序交互

网上有很多关于如何产生一个subprocess的节点js例子,然后把结果作为一个string来处理。 但… 我想与孩subprocess“互动”。 例如,我将如何编写节点js应用程序,而不是通过调用“ python ”开始,然后在继续input另一个任意语句“ 4+4 ”之前键入语句“ 1+1 ”,让我捕获结果“ 2 ” ? (通过“types”我假设它将需要stream数据到该进程使用的标准input)。

从node.js,更快,shell grep或fs.readFile?

我有一个很长的node.js进程,我需要扫描日志文件的模式。 我至less有两个明显的select: 产生一个grep进程或使用fs.read *读取文件,并parsingnode.js中的缓冲区/stream。 我没有发现两种方法比较intarwebs。 我的问题是双重的: 哪个更快? 为什么我更喜欢一种技术而不是另一种呢?

同步subprocess调用Node.js 0.10.x中的shell脚本(包括CLI)

同步subprocess调用现在可用于正在开发(即不稳定)的Node.js版本。 这对编写shell脚本来说是个好消息,因为它会允许这样的代码: var history = child_process.execSync('git log', { encoding: 'utf8' }); process.stdout.write(history); 但是,针对当前稳定版本的Node.js(v0.10.30)的代码,除了通过外部库之外,同步subprocess调用不可用 。 两个最stream行的这样的库似乎是shelljs和exec-sync 。 对于准备与v0.10.x一起使用的shell脚本,必须调用二进制文件或其他可执行文件并处理它们的输出,这两个库或其他类似库的相对优缺点是什么? 如果适用,请提供代码示例以供说明。

为单个文件设置语法高亮显示

我经常编写小型的命令行实用程序,并使用其他语言来创build这些脚本(例如node.js,php等)。 当我创build这些文件时,我使用了一个标准的#! 启动文件来向shell表明这个intepreter应该是什么。 例如,对于一个node.js脚本,我把它放在顶部: #!/usr/bin/env node 在PHPStorm / WebStorm中,只要文件扩展名为.js ,语法突出显示就可以正常工作,但是如果删除了扩展名,则没有语法突出显示。 在SublimeText中,我可以使用命令pallet通过键入Ctrl + P / Cmd + P + SSJS(Set Syntax JavaScript)来将当前文件的语法设置为JavaScript(例如) JetBrains IDE中有没有什么办法可以设置单个文件的语法,而不仅仅是基于文件扩展名注册文件types?

如何检测Node的process.stdout是否被pipe道?

有没有什么办法可以检测到我的Node.js脚本的输出是否被传送到terminal以外的东西? 我想要一些检测这种情况的方法: node myscript.js | less 或者如果发生这种情况: node myscript.js