少ないパイプを探す - 「上」を押すと、なぜ正しい行だけが残るのですか?

少ないパイプを探す - 「上」を押すと、なぜ正しい行だけが残るのですか?

便利な行をフィルタリングする良い方法を偶然見つけましたfind。一番下にパイプを接続し、一番下にless表示されたら、矢印キーを押して正しい行だけを残します。いいえ、シンボリックリンクエラーはありません。他にはありません。(END)upPermission denied

find / -name foo | less

しかし、なぜ?この動作の原因に対する答えが見つかりません。less結果ではない行を魔法のようにフィルタリングしますか?

ベストアンサー1

find-print「ジョブ」がない場合は、ファイル名全体を標準出力に出力する基本ジョブが適用されます。エラーは標準エラーに移動します。

パイプ演算子は標準出力のみをリダイレクトするため、「正しい」ファイル名のみが送信され、less他のすべては端末である標準エラーとして送信されます。less 返品端末に書き込むと、最初は画面にファイル名とエラーが表示されますが、上にスクロールするとless(または画面を更新する他の操作を呼び出すと)、更新lessによってエラーが上書きされます。less入力は標準出力に表示されます。find

から出力全体を渡すには、less標準エラーもリダイレクトする必要があります。

find / -name foo 2>&1 | less

エラーを完全に無視するには、エラーをビットバケットにリダイレクトしてください。

find / -name foo 2>/dev/null | less

おすすめ記事