シェルリダイレクトを使用して対話型コマンドの前にテキストを追加しますか?

シェルリダイレクトを使用して対話型コマンドの前にテキストを追加しますか?

つまり、インタラクティブなプロンプトを持つほとんどのプログラムには、ある種の初期化ファイルや何かを実行するコマンドフラグを設定する機能があることがわかります。それから対話型プロンプトに移動します。しかし、私はシェルレベルのソリューションに興味があります。


xyz端末の代わりに改行で終わるコマンドを実行するための対話型プロンプトを提供するシェルで実行するコマンドがあるとします。

対話型セッションが開始されるたびに実行したい2つのコマンド(2行)があるとしますxyz

この2行の場合ただ実行したいコマンドはもちろん、次のように実行できます。

printf '%s\n' 'first command' 'second command' | xyz

または、実行するコマンドが多いが事前にすべてを知っている場合は、そのコマンドをすべてファイルに入れて、次のコマンドを実行できます。

xyz < commands-file.txt

しかし、xyz私が入力した後、手動で入力した結果の標準的な対話型プロンプトを取得したいと思いますfirst commandsecond command...リダイレクトを使用してシェル(たとえば、シェル関数)でこれを行う方法はありますか?


入力が端末から出ていないか、出力がバッファリングされているかどうかわからないため、明らかな解決策はsed -e '1ifirst command' -e '1isecond command' | xyz機能しません。xyzsed

ベストアンサー1

おすすめ記事