行数に応じて「cat」または「less」を使用する方法は?


12

ファイルのコンテンツを見るとき、画面サイズを超えるcatファイルを自動的に短くしたいと思いますless。で何かを使用することもできますwc -lが、ウィンドウサイズ/現在の利用可能な行数も考慮するより良い方法はありますか?


1
多くのツールがこれを行いますが、期待性を損なうことに注意してください。つまり、ユーザーは何が起こるかを事前に知ることができません。git logこれは、たとえば、これとまったく同じことをするのは面倒です。何を取得するかを事前に知ることはできません(ヒットする必要がありますqか?)。
ビットマスク

4
注:一般に、catファイルの表示には使用しないでください。通常cat、ファイルの内容をstdoutに送信するためにのみ使用し、別のプロセスにパイプできるようにします。cat表示に使用しないようにする理由は、未加工のバイトを端末に送信するためです。これにより、予期しない端末コマンドが実行される可能性があります(たとえば、ファイルに端末のキーボードを無効にする適切なバイトが含まれていると、スタックする場合があります) 。通常は、ページャーのようなlessエディターまたはエディターを使用する必要があります。これらのエディターは、表示用に特殊文字をフォーマットし、端末で解釈されないようにします。
クリスページ

2
catを使用して端末でファイルの内容を直接表示する場合は、少なくともcat -v特殊文字をエスケープするように使用します。
クリスページ

@bitmaskの良い点、それが私が尋ねた理由です分割画面はcat可能ですか?これはより良い解決策かもしれません
トビアスキンツラー

@ChrisPage私のキーボードが殺され、しかし、私は私が指し示すために一度...おかげでコードページを台無しにすることをどうにか考えていなかったcat -vアウト
トビアスKienzler

回答:


9

- wcベースのチェックを含む式を提供するには:

(($(wc -l<input_file)<=$(tput lines))) && echo 'will fit' || echo 'not enough'

あり$LINESも使用できるシェル変数は:

(($(wc -l<input_file)<=LINES)) && echo 'will fit' || echo 'not enough'

ただし$LINES、コマンドプロンプトでのみ更新されます。私が意味することを理解するために、これを実行し、端末ウィンドウのサイズを変更しますsleep

( sleep 3; echo $LINES; tput lines )

おかげで、これには、lessたとえば画面の2/3がで使用されている場合に使用するように調整できるという利点がありますcat
トビアスキンツラー

20

たぶん「less -F file_to_read」がオプションです:ウィンドウがすべてのファイルを表示するのに十分な場合は終了し、そうでない場合はページャーで待機します


良さそうに聞こえますが、その場合は何も出力されず、終了コードは両方の場合で同じです
トビアスキンツラー

「less -F / etc / passwd」を試してみると、ファイルが正しく表示されます(ポケットベルの有無にかかわらず)。どちらの場合も戻りコードは0です。
ドム

11
このコマンドは要求どおりに機能しますが、小さな不具合があります。ファイルを表示した後、画面をクリアします。-Xオプションを追加するとクリアが停止するため、短いファイルが表示されますcat。残念ながら-X、画面は長いスクロールファイルを表示した後もクリアされません。
マナトワーク

1
@manatworkそれは素晴らしい、ありがとう。画面をクリアしないと(いない)場合はどうなるのかというのため、実際にはokですcatだけでなく、呼ばれていた
トビアスKienzler
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.