Запрос на обновление файла конфигурации

Эквивалентом $COLUMNSдля строк является $LINES. Это устанавливается некоторыми оболочками, такими как zshили bash(, хотя в случае bashтолько в интерактивном режиме )на основе самих настроек дисциплины линии устройства tty (, обычно устанавливаемых эмулятором терминала или в случай ssh, по sshdиз значений, предоставленных клиентом (Я не знаю, отправляет ли ConnectBotэти )).

Вы сможете найти информацию на справочной странице вашей оболочки. Например, дляzsh:info zsh LINES.

Другие варианты:

  • в некоторых системах (и , которые станут стандартом в будущих версиях POSIX ), 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)"
    

0
17.09.2020, 15:07
1 ответ

Непонятно, что вы подразумеваете под «не обновляет значение». Если вы имеете в виду, что файл /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"
    
0
18.03.2021, 23:04

Теги

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