2

特定のアプリケーションの場合、設定できるフラグまたは構成がある場合がありますgit diff --no-pager

しかし、デフォルトの動作などを変更するつもりはありません。(スクリプト化された PTY イベントの特定のインスタンスに対して) 出力が非対話的に出力されるように強制しようとしています。

私は2つのアプローチを考えることができます:

command | cat... また ...cat <(command)

これらのコマンドは PTY で実行されます (具体的にはtmux、のように script.sh 経由で送信されtmux new-window script.shます)。これは実際には、スクリプトを実行するのとは異なり (スクリプトの記述方法と同様)、実際に入力するように実行されます。の。

最初のcatアプローチは、実際にはプログラムをフォークしてパイプを作成するため、おそらく遅くなると思います。私が知る限り、2番目のアプローチでも同じことができます。猫の使用を回避するにはどうすればよいですか? これは実際に真に有用な使用法catですか??

私はさらに2つの方法を考えました:

mkfifo fifo
command > fifo &
cat fifo

わかりました、それは愚かに見えて、 のロングハンドです|

command > file &
tail -f file

ファイルへの書き込みがいつ完了したかを知る方法は?

rm -f file
touch file
tail -f file &
PID=$!
command >> file
kill $PID

かなり遠回り。

他に可能な方法はありますか?どれが一番いいですか?

4

1 に答える 1

3

最善の方法は、に割り当てるcatこと$PAGERです。これにより、正しく作成されたアプリは出力をダンプするだけになります。

export PAGER=cat
于 2013-07-25T05:19:50.967 に答える