コマンドにテキストを送信してから端末から読む方法

コマンドにテキストを送信してから端末から読む方法

コマンドの標準入力として何かを送信し、端末から読み続けることができるかどうか疑問に思います。

私が解決しようとしている問題は、Node.js REPLを開くたびにいくつかの初期化コードを実行することであるため、最初からREPLでいくつかの機能を使用できます。デフォルトでこれを自動化するには、次のようにします。

$ node
> require('./myutils')
> ... continue using the REPL

これで、次の文字列を使用してコマンドの標準入力にいくつかのテキストを送信できます。

$ node <<<"require('./myutils')"

これにより初期化コードが実行されますが、その後REPLもすぐに閉じます。

おそらくNode.jsにはこの特定の問題に対する別の解決策があるかもしれませんが、文字列またはファイルの入力を混在させてから端末で読み続ける一般的な方法があるかどうか疑問に思います。

修正する:Chris Tangのソリューション動作しますが、Node.js REPLはデフォルトでは対話型モードでは実行されません(ターミナルから読み取られないために予想される現象です)。幸いなことに-i、Node.js端末にはインタラクティブモードを強制するオプションがあります。

{ echo "require('./myutils')" ; cat ; } | node -i

ベストアンサー1

{ echo "require('./myutils')" ; cat ; } | node

REPL環境は、端末から提供されていない入力を受け取ると異なる動作をする可能性があります(たとえば、プロンプトが表示されない場合があります)。

おすすめ記事