3

Ширина терминала по умолчанию может составлять 80 символов, однако вывод команды мог бы составлять 100 символов (шире, чем ширина терминала), поэтому она перебрасывается и помещает 80 символов в одну строку и, возможно, помещает 20 символов в следующую. линия. Когда я изменяю размер терминала до 200 символов, все, что уже было показано на экране, остается точно таким же, каким оно было (80 на одной строке и 20 на другой строке). Мне интересно, есть ли какое-нибудь решение, при котором терминал перекрасит содержимое, чтобы все 100 символов поместились в одну строку.

Моя текущая система - Ubuntu Linux, и я использую bash. У меня есть ощущение, что есть решение, так как, когда я использую OSX, кажется, что он может перерисовать содержимое терминала и переставить предыдущие строки.

1 ответ1

1

Поскольку я задал этот вопрос, я нашел фрагмент кода, который решает эту проблему.

Я проверил его в RHEL5, и он успешно решает мою проблему. Таким образом, при получении команды выведите текст. Например: ls -al вы можете изменить размер окна с помощью мыши более или менее чем на 80 пикселей, а вывод с переносом на следующую строку, если на экране недостаточно видимого пространства, или развернуть, чтобы занять только одну строку. , как вы расширяете свое окно.

Нашел по адресу :http://codesnippets.joyent.com/posts/show/1645

tput lines
tput cols

echo $LINES
echo $COLUMNS

stty size
stty size | awk '{print $1}'    # lines
stty size | awk '{print $NF}'   # columns

stty size | cut -d" " -f1   # lines
stty size | cut -d" " -f2   # columns 

stty -a | awk '/rows/ {print $4}'      # lines
stty -a | awk '/columns/ {print $6}'   # columns

stty -a | sed -E -n -e 's/^.*[^[:digit:]]([[:digit:]]+)[[:space:]]+rows;.*$/\1/p;q;'
stty -a | sed -E -n -e 's/^.*[^[:digit:]]([[:digit:]]+)[[:space:]]+columns;.*$/\1/p;q;'



# automatically resize the Terminal window if it gets smaller than the default size

# positive integer test (including zero)
function positive_int() { return $(test "$@" -eq "$@" > /dev/null 2>&1 && test "$@" -ge 0 > /dev/null 2>&1); }


# resize the Terminal window
function sizetw() { 
   if [[ $# -eq 2 ]] && $(positive_int "$1") && $(positive_int "$2"); then 
      printf "\e[8;${1};${2};t"
      return 0
   fi
   return 1
}


# the default Terminal window size: 26 lines and 107 columns
sizetw 26 107


# automatically adjust Terminal window size
function defaultwindow() {

   DEFAULTLINES=26
   DEFAULTCOLUMNS=107

   if [[ $(/usr/bin/tput lines) -lt $DEFAULTLINES ]] && [[ $(/usr/bin/tput cols) -lt $DEFAULTCOLUMNS ]]; then
      sizetw $DEFAULTLINES $DEFAULTCOLUMNS
   elif [[ $(/usr/bin/tput lines) -lt $DEFAULTLINES ]]; then
      sizetw $DEFAULTLINES $(/usr/bin/tput cols)
   elif [[ $(/usr/bin/tput cols) -lt $DEFAULTCOLUMNS ]]; then
      sizetw $(/usr/bin/tput lines) $DEFAULTCOLUMNS
   fi

   return 0
}


# SIGWINCH is the window change signal
trap defaultwindow SIGWINCH    


sizetw 26 70
sizetw 10 107
sizetw 4 15

По какой-то веской причине OSX (по крайней мере в моем текущем 10.7.2), кажется, поддерживает изменение размера изначально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .