如何在 node.js 脚本中获取有关标准输出重定向文件名的信息

How to have information about stdout-redirected filename in a node.js script

我的问题可能很简单,也可能没有解决方案。所以,我请你帮我找出如何访问 stdout 重定向到 out.txt

的信息
node do-nothing.js < in.txt > out.txt

特别是我需要在脚本 do-nothing.js 中访问文件名 "out.txt"(即访问 process.stdout.______)

提示:我已经注意到在应用重定向时 process.stdout._type 变成 'fs' 而不是 'tty'。

你可以使用这个模块 https://www.npmjs.com/package/yargs 然后这个模块你命名为 https://www.npmjs.com/package/fs 另一方面如果你需要更复杂的东西你可以使用子进程打包以从 args 执行您需要的操作并执行您拥有的 bash 脚本,例如

我明白了。这是解决方案,如果您将脚本作为 node stdout_redirect.js > out.txt && more out.txt 启动,您会在 d 变量中找到所需的信息。感谢您的帮助,希望这对其他人有帮助。

var fs = require('fs');

fs.readdir(process.env.PWD,function(err, dir){
    var stdout_ino = 0;
    fs.stat('/dev/stdout',function(err,stats){
        stdout_ino = stats.ino;
        dir.forEach(function(d){
            fs.stat(d,function(err,stats){
                if (stats.ino === stdout_ino)
                {
                    console.log(d);
                }
            });
        });
    });
});