Отфильтруйте переменную по определенной части / символу | разрешению автоматического набора из отфильтрованного текста | Ubuntu, Bash

#regex #bash #ubuntu #xrandr

Вопрос:

Я пытаюсь создать сценарий, который устанавливает разрешение 1920х1080 при 60 Гц, как показано ниже…

Скрипт должен отфильтровать, чтобы получить конкретные параметры для xrandr, так как на выходе обеих команд есть текст, который не нужен.

Затем установите разрешение на основной дисплей, например. HDMI1 или VGA1 для использования вновь созданного режима.

 #!/bin/bash
# Script that sets resolution to 1920x1080 at 60Hz

CVTOUT=$(cvt 1920 1080 60)
# here insert a filter that removes the other output of cvt to begin
# with "1920x1080_60.00".. so xrandr is satisfied if the variable gets 
# passed as a parameter.

DISPLAYNAME=$(xrandr)
# here insert a filter that filters the entire output of the xrandr 
# command and gets only the display name, setting the corresponding 
# variable to use the newly filtered text. 

# Begin the part that actually sets the resolution via xrandr

# create new mode with the filtered variable
xrandr --newmode $CVTOUT

# add the mode with the filtered display name parameter from above
xrandr --verbose --addmode $DISPLAYNAME "1920x1080_60.00"

# set the display (represented by the variable) to use the newly added mode
xrandr --output $DISPLAYNAME --mode "1920x1080_60.00"
 

P.S.

Я знаю, что установка его с помощью скрипта при загрузке и т. Д. Не Является Правильным способом, вам не нужно читать мне лекции о лучших методах и о том, как это сделать в файле конфигурации…

Система: Ubuntu 20.04 с использованием только основных системных утилит, терминала gnome, openbox и xorg

Комментарии:

1. Что вы имеете в виду под get display name command этим ?

2. @Philippe команда, которая получает основное отображаемое имя, не смогла его найти, например. HDMI1 или VGA1 и т.д.

3. Если вы запустите xrandr без каких-либо аргументов, он отобразит текущий экран и все доступные разрешения. Например, на моем ноутбуке отображается строка 1 Screen 0: minimum 320 x 200, current 1600 x 900, maximum 8192 x 8192 , строка 2 eDP-1 connected primary 1600x900 0 0 (normal left inverted right x axis y axis) 309mm x 174mm

4. @Nic3500 да, но теперь проанализируйте информацию так, чтобы она соответствовала параметрам, необходимым для xrandr

5. Действительно, вам нужно проанализировать, чтобы извлечь первое слово из второго, подобного, которое дает вам название вашего основного дисплея.