ターミナルにいくつの列があるかをすばやく確認するにはどうすればよいですか? [コピー]

ターミナルにいくつの列があるかをすばやく確認するにはどうすればよいですか? [コピー]

ウィンドウのサイズ変更、フォントサイズの変更など、端末の現在の表示幅がどのくらいであるかをすばやく簡単に確認する方法は?

答え1

この質問は何度も答えられ、不正確でした。しかし:

  • tput colsオペレーティングシステムが通知できる幅に関する情報を提供します。

  • このCOLUMNS変数はシェルで設定できますが、(a)信頼できない(一部のシェルで設定)、エクスポートすると欠点があります。〜するフルスクリーンアプリケーションを邪魔します。

  • これresizeプログラムは、端末がオペレーティングシステムとウィンドウサイズを交渉できない特別なケースのサイズを知らせることができます。

追加資料:COLUMNSncurses のマニュアルページから。

答え2

シェルによってCOLUMNSウィンドウサイズが変更されると、(および)変数が自動的に設定されることがあります。LINESbash、zsh、kshの両方が利用可能です。ダッシュ番号。 tcshはそうではありません。

からman bash

COLUMNSは、選択リストを印刷するときに端末の幅を決定するために複合選択コマンドによって使用されます。 checkwinsizeオプションが有効になっている場合、またはSIGWINCHを受信した後、対話型シェルで自動的に設定されます。

そして

ライン

印刷選択リストの列の長さを決定するために、select complexコマンドで使用されます。 checkwinsizeオプションが有効になっている場合、またはSIGWINCHを受信した後、対話型シェルで自動的に設定されます。

次のエイリアスが役に立つことがわかりました。

$ alias ttystat='echo $(tty) $TERM ${COLUMNS}x$LINES'
$ ttystat
/dev/pts/2 xterm 192x51

答え3

間違いなくより短い方法がありますが、次はPOSIX指定ユーティリティ以外には何も使用せずに高速インタラクティブチェックを実行します。

printf '0123456789\n1234567890\n' | sed '1s/./&&&&&&&&&&/g;1s/^.//;2s/.*/&&&&&&&&&&/'

コマンドを実行し、ディスプレイの右端にある数字を読みます。これを2桁下に読むと、列数がわかります。

72列端子の出力例(表示):

$ printf '0123456789\n1234567890\n' | sed '1s/./&&&&&&&&&&/g;1s/^.//;2s/
.*/&&&&&&&&&&/'
000000000111111111122222222223333333333444444444455555555556666666666777
777777788888888889999999999
123456789012345678901234567890123456789012345678901234567890123456789012
3456789012345678901234567890
$

関連情報