回答:
trueそして、falseしているのcoreutilsは(また、一般的にビルトインをシェル)ちょうどあなたがその動作を必要とするために起こる状況では、0と非0を返すこと。マニュアルページから:
true-何もしない、成功する
false-何もしない、失敗する
したがって、出力をstop service fooにパイピングしtrue、無視して0を返します。技術的には動作しますが、おそらく使用する必要がある|| trueので、意図が何であるかが明らかです。使用していないプログラムに出力をパイプする理由は本当にありません
| trueは、コマンドがパイプバッファをいっぱいにするのに十分な出力を生成した場合、そのtrue読み取りを待機することをブロックすることです。
foo || trueとfoo | true同じことをしないだろう。foo || trueからの出力を表示しますfoo一方で、foo | trueすべて廃棄されますfoo(とその標準出力に書き込みをfooして死ぬ可能性がありSIGPIPE、既に示されているまたはブロック)。