Эквивалентом $COLUMNS
для строк является $LINES
. Это устанавливается некоторыми оболочками, такими как zsh
или bash
(, хотя в случае bash
только в интерактивном режиме )на основе самих настроек дисциплины линии устройства tty (, обычно устанавливаемых эмулятором терминала или в случай ssh
, по sshd
из значений, предоставленных клиентом (Я не знаю, отправляет ли ConnectBot
эти )).
Вы сможете найти информацию на справочной странице вашей оболочки. Например, дляzsh
:info zsh LINES
.
Другие варианты:
stty size
возвращает ту же информацию, что и
, в одной строке. На других они обычно отображаются в выводе stty -a
, хотя и в формате, который зависит от системы к системе. ncurses
реализацией tput
вы можете использовать tput lines
и tput cols
для получения количества строк и столбцов (, которые могут вернуться к запросу базы данных terminfo, когда информация не может быть извлечена. с оконечного устройства ). Некоторыеxterm
-например, эмуляторы терминала (Я не знаю, так ли обстоит дело с ConnectBot ), позволяющим вам запрашивать размер терминала с помощью некоторых escape-последовательностей(\e[18t
). Например, сzsh
:
IFS=";" read -sd t $'ignore?\e[18t' lines cols
для сохранения размеров в $lines
и $cols
.
с большинством терминалов вместо управляющей последовательности \e[18t
также можно использовать (более распространенные )управляющие последовательности, которые перемещают курсор в правый нижний угол экрана и запрашивают позицию курсора там.Это то, что на самом деле делает утилита resize
, поставляемая с xterm
, и может использоваться для согласования настроек tty с этим и установки переменных среды $LINES
и $COLUMNS
для тех оболочек, которые еще не делают этого самостоятельно:
eval "$(resize -u)"
Непонятно, что вы подразумеваете под «не обновляет значение». Если вы имеете в виду, что файл /Home/config
не изменен -, так sed
работает по умолчанию, т.е. читает входной файл, применяет изменения и выводит результат на консоль.
Вы можете либо перенаправить вывод в другой файл, а затем переименовать для перезаписи, либо -, если ваш sed
поддерживает это, -использовать флаг -i
для редактирования "в -месте" файл.
Короче:
sed -e '/\(^Run=\).*/ S//\1No/' "$config_file" > "$config_file.bup"
mv "$config_file.bup" "$config_file"
sed -e -i '/\(^Run=\).*/ S//\1No/' "$config_file"