ほとんどの回答はここ[ 1 ] [ 2 ] [ 3 ]で、単一の山括弧を使用して/ dev / nullにリダイレクトします。
command > /dev/null
ただし、/ dev / nullへの追加も機能します。
command >> /dev/null
余分なキャラクターを除いて、これをしない理由はありますか?これらのいずれかは、/ dev / nullの基礎となる実装に対して「より良い」ものですか?
編集:オープン(2) manページは言うのlseekは追加モードでファイルへの各書き込みの前に呼び出されます。
O_APPEND
ファイルは追加モードで開かれます。各write(2)の前に、ファイルオフセットは、lseek(2)の場合と同様に、ファイルの末尾に配置されます。ファイルオフセットの変更と書き込み操作は、単一のアトミックステップとして実行されます。
を使用すると、パフォーマンスがわずかに低下する可能性があると思います>>
。しかし、その一方で、/ dev / nullの切り捨ては、そのドキュメントによると、未定義の操作のように思われます。
O_TRUNC
ファイルが既に存在し、通常のファイルであり、アクセスモードで書き込みが許可されている場合(つまり、O_RDWRまたはO_WRONLY)、長さ0に切り捨てられます。ファイルがFIFOまたは端末デバイスファイルの場合、O_TRUNCフラグは無視されます。それ以外の場合、O_TRUNCの効果は指定されていません。
およびPOSIX仕様は述べている>
既存のファイルを切り捨てるものとするが、O_TRUNCは実装定義のデバイスファイルのためであると切り捨てられることに対応すべきかを/ dev / nullには単語がありません。
したがって、/ dev / nullの切り捨ては実際には指定されていませんか?また、lseek呼び出しは書き込みパフォーマンスに影響を与えますか?