特定のコマンドを介してすべてのbashターミナルコマンドをパイプできるようにしたいです(誰かにいたずらをする以外の正当な理由はありません)。特別なことを何もせずに、実行されたコマンドの標準出力を所定のプログラムにパイプするだけです。
例:その所定のプログラムがcowsay
であった場合
echo "Hello World"
出力する必要があります
_____________
< Hello World >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
どうすればこれを達成できますか? (他の人にいたずらをするのに使用したい楽しいプログラムには、rev
、cowsay
、およびlolcat
があります)
exec > >(COMMAND)
COMMAND
はrev
、lolcat
、またはその他です。これはcowsay
では機能しません。
例えば。
bash-4.3$ exec > >(rev)
bash-4.3$ echo hello
olleh
説明:
exec
は通常、現在のシェルを別のプロセスに置き換えますが、この場合のようにリダイレクトを行うと、現在のシェルに対してリダイレクトが行われます。>
リダイレクトstdout>(COMMAND)
_COMMAND
への入力Prompt_COMMAND
がある場合、リダイレクトされたstdoutを避けるために、それをstderrに転送する必要があることに注意してください。