在node.js中生成'fc -ln -1'(bash历史记录)spawn

时间:2016-03-23 13:55:56

标签: javascript node.js bash

我一直在寻找答案而我找不到答案(也许我不是很好)。问题如下:

var spawn = require('child_process').spawn;
var proc = spawn('fc', ['-ln', '-1']);

proc.stdout.on('data', function (data) {
  console.log(data.toString('utf-8'));
});

proc.stderr.on('data', function (data) {
  console.log('Error: ' + data.toString('utf-8'));
});

proc.on('close', function (code) {
  console.log(code);
});

当我运行此节点脚本时,它输出'0'而没有其他内容。显然spawn有效,但它不输出历史记录。我尝试了很多组合,但fc命令根本不输出任何内容。我也尝试过exec和execSync。两者都没有输出。

有没有办法从node.js获取bash历史记录?我错过了什么?

更新

根据this,无法在shell脚本中输出bash history命令。这可能意味着从产生的子进程中,它仍然成立。我放弃了尝试获取最后一个使用过的命令,因为Etan让我意识到在交互式多会话中没有简单的方法来告诉“最后使用过的命令”。我现在正试图从Node内部读取$ HISTFILE shell var(历史文件位置)但没有运气。

有什么想法吗?

更新2:

我只是硬编码了大多数使用过的shell历史路由(bash,zsh,fish)并直接读取文件。但是,由于我学到了很多关于shell脚本的知识,所以我将保持开放状态,希望这会对其他人有所帮助。在Node中使用的关键变量(至少在Mac中)是process.env.SHELLprocess.env.HOME,用于构建文件路径。

0 个答案:

没有答案