Как можно Я быстро проверяю, сколько столбцов у моего терминала? [дубликат]

Один из способов сделать это — написать правило udev, которое заставляет udisks2 игнорировать любые добавленные блочные устройства. Это можно сделать, закинув файл 10-mydisks2.rules в /etc/udev/rules.d с правилом:

ACTION=="add|change", SUBSYSTEM=="block", ENV{UDISKS_IGNORE}="1"

Это задокументировано в:

man 7 udev
man 8 udisks
0
07.05.2016, 11:59
3 ответа

Несомненно, существует более короткий способ, но следующий не использует ничего, кроме указанных в POSIX утилит. для быстрой интерактивной проверки:

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

Запустите команду и прочтите цифры, которые находятся справа на вашем дисплее. Прочтите это как двузначное число вниз; это говорит вам, сколько столбцов у вас есть.

Пример вывода (как показано) на терминале из 72 столбцов:

$ printf '0123456789\n1234567890\n' | sed '1s/./&&&&&&&&&&/g;1s/^.//;2s/
.*/&&&&&&&&&&/'
000000000111111111122222222223333333333444444444455555555556666666666777
777777788888888889999999999
123456789012345678901234567890123456789012345678901234567890123456789012
3456789012345678901234567890
$
0
28.01.2020, 02:20

В зависимости от оболочки переменные COLUMNSLINES) могут быть автоматически установлены при изменении размера окна. bash, zsh, ksh do. dash не делает. tcsh этого не делает.

Из man bash:

COLUMNS Используется командой select compound для определения ширины терминала при печати списков выделения. Автоматически устанавливается, если Опция checkwinsize включена или в интерактивной оболочке при получение SIGWINCH.

и

LINES

Используется командой select compound для определения столбца длина для печати списков выбора. Автоматически устанавливается, если Опция checkwinsize включена или в интерактивной оболочке при получение SIGWINCH.

Я нахожу полезным следующий псевдоним:

$ alias ttystat='echo $(tty) $TERM ${COLUMNS}x$LINES'
$ ttystat
/dev/pts/2 xterm 192x51
1
28.01.2020, 02:20

На этот ответ был дан (и неправильно ответил) неоднократно. Но:

  • tput cols предоставляет информацию, которую операционная система может рассказать вам о ширине.

  • переменная COLUMNS может быть задана вашей оболочкой, но (a)он ненадежен (устанавливается в определенных оболочках) и имеет тот недостаток, что при экспорте будет мешать работе полноэкранных приложений.

  • Программа resize может определить размер для особых случаев, когда терминал не может согласовать размер окна с операционной системой.

Дальнейшее чтение: COLUMNS на странице руководства по ncurses.

6
28.01.2020, 02:20

Теги

Похожие вопросы