「cat」と「less」の間の標準入力入力動作

「cat」と「less」の間の標準入力入力動作

を実行すると、cat端末はstdinの入力を待って停止します。しかしless、投稿されたとき、私はそれを得ましたMissing filename ("less --help" for help)。私たちは皆知っているように、less標準入力入力の両方をcat許可します。違いは何ですか?これはマニュアルページにどのように反映されますか?

ベストアンサー1

lessファイル名引数が指定されていない場合は、次のコードが実行されます。

if (isatty(fd0))
{
    error("Missing filename (\"less --help\" for help)", NULL_PARG);
    quit(QUIT_OK);
}
return (edit("-"));

標準入力が端末の場合は文句を言います。標準入力が通常のファイルやパイプであれば大丈夫です。

おそらく、各ページの終わりに端末の応答を読み取る必要があり、ページングされているデータと応答を区別できないため、これを行うようです。

マニュアルページにはこれに対する言及はありません。おそらくそうすべきでしょう。

cat出力をページングせず、端末から応答を読み取ることもありません。 stdin この端末に関する限り、制限はありません。

おすすめ記事