如何在node.js脚本中获得有关stdout重定向文件名的信息

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

本文关键字:stdout 重定向 文件名 信息 node js 脚本      更新时间:2023-09-26

我的问题可能很简单,或者可能没有解决方案。所以,我请求您帮助我了解如何访问stdout重定向到out.txt 的信息

node do-nothing.js < in.txt > out.txt

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

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

您可以使用此modulehttps://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);
                }
            });
        });
    });
});