たとえば、大量の出力を生成する一部のシェルコマンドは、git diff
出力が長すぎると巧妙にポケットベルを投げるように見えますが、出力が非常に小さい場合はそうしません。
どのように動作しますか?各個々のプログラムには、出力を測定してポケットベルを呼び出す独自のコードがありますか?出力が長すぎると認識した場合、すでにstdoutに何かを印刷して返すことはできませんか?それとも明示的にプログラムされていなくても、すべてのプログラムで利用できる一般的なシェル機能ですか?
明らかに、foo | less
もちろんポケットベルを必須にする必要があり、foo | cat
ポケットベルを必須にしないことはありません。foo
任意の動作を実行する方法があるかどうか疑問に思います。そして、文字通り実装(おそらくbashの2〜3行で実行できます)と実行をfoo | pager_if_needed
意味するものではありません。これは、他のすべてには適用されないためです。pager_if_needed
alias foo="foo | pager_if_needed"
bar
baz
ベストアンサー1
シェルはポケットベルを呼び出すタイミングをどのように決定しますか?
しかし、実際にはそうではありません。
各個々のプログラムには、出力を測定してポケットベルを呼び出す独自のコードがありますか?
はい。
出力が長すぎると認識した場合、すでにstdoutに何かを印刷して返すことはできませんか?
簡単です。印刷印刷を開始してください。後ろに長すぎるか確認してください。