ターミナルで使用可能な垂直線の数を確認するにはどうすればよいですか?


12

そこにcdしたときにディレクトリのgitログを表示するスクリプトを書いています。そのようなログは、数百行を含む圧倒的なものになる可能性があります。これまで、私はそれをハードコードされた20行(... | head -n 20)に制限してきました。これは職場の画面では問題ありませんが、自宅の小さなMacBook画面では多すぎます。

どちらの端末でも、ログが(垂直)画面の約半分を占めることを希望します。また、「ターミナル」も変更されます。職場ではGnomeターミナルですが、自宅ではiTerm2です。また、screenやtmuxも使用していません。

コマンドラインからターミナルで利用可能な垂直線の数を見つけるにはどうすればよいですか?

回答:


20

端末パラメーターは$LINES$COLUMNS変数として保存されます。

さらに、次のような特別な用語操作プログラムを使用できますtput

tput lines  # outputs the number of lines of the present terminal window.
tput cols   # outputs the number of columns of the present terminal window.

9
LINESそしてCOLUMNS、いくつかのシェルによってのみ設定されます。bashそれらを設定します、インタラクティブシェルに対してのみ使用します(そしてエクスポートしません)。
Mr.spuratic

1
環境変数は、私のtcshには存在しません。また、端末ウィンドウのサイズを変更すると、システムがそれらをリセットするのかどうか疑問に思います。tputとsttyの両方が私のために働くので、私は何か新しいことを学びました:
jamesqf

@jamesqf bashのドキュメントには、「SIGWINCHの受信時に自動的に設定される」と書かれています。そのため、ターミナルウィンドウのサイズを変更すると、変更されます。
セラダ

vaiable次のオプション上記オートセットのために責任があるshopt -s checkwinsize私で追加され/etc/bash.bashrcたコメントを持つファイル:# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
コスタス

9

このコマンドにより、端末の行数が表示されます。

stty size | cut '-d ' -f1

一部のシステムは実装されstty sizeていないため、代わりに次のようなものが必要になる場合があります。

stty -a | tr \; \\012 | grep rows | tr -d ' rows'

1
これは非常にOS固有のようです。各呪文が機能するシステムのリストを編集できますか?
ウォーレンヤング

4
最初のものはOS固有のものであるのではないかと心配したため、2番目のものを追加しました。確かに、少しグーグルで調べた後、最初の1つはおそらくSolarisでは動作しないことがわかります。2番目は非常に移植性が高いはずです。正直なところ、@ Costas ' tput linesがより良い答えのようで、私はそれを支持しました。以前は知りませんでした。
Celada

1
またはstty -a次のようなもので代替の長いパイプを提供したいと思いますgrep -Po 'rows \K[^;]*'sed -n 's/.*rows \([^;]*\).*/\1/p'
コスタ

実際、@ Costasはイライラして、私のコマンドもあなたのどちらもMacOSで動作しなかったので、別のコマンド(編集済み)を考え出す必要がありました。Go figure:MacOSは「24行」ではなく「24行」を出力します!私は今でもtput linesずっといいと思うし、かなりポータブルだと思う!
セラダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.