Хотелось бы менять яркость и другие режимы монитора утилитой ddcutil, но почему работает только ddccontrol?

sudo ddcutil detect
(i2c_set_addr) Error in ioctl(I2C_SLAVE), errno=EBUSY(16): Device or resource busy
(i2c_set_addr ) addr = 0x50. Returning EBUSY(-16): Device or resource busy
No displays found

ddccontrol -p # поиск доступных мониторов
radeon_open: mmap failed: Invalid argument
- Устройство: dev:/dev/i2c-7 DDC/CI: Да VESA standard monitor
Тип входа: Цифровой

$groups
wheel i2c sys tty dbus polkitd usbmux git video storage render lp input disk adm users

монитор: ASUS VS239NV 03.2015
видео: Radeon RX 550 Series GCN 1.3 RV370 (hari) (Polaris 12, DRM 3.19.0, LLVM 6.0.0)

ddccontrol работает, но считывание/запись регисторов происходит медленно, как вместо ddccontrol использовать ddcutil?
система обновлена. установка ddcci-driver-linux-dkms не помогла, результат тот же.
Aivar
По прошествии последних трех тем так и хочется сказать: "Какая гадость эта ваша заливная рыба…" (с)
Аналогично про третий gnome - абсолютно неюзабельный DE для рабочей станции, уж лучше на XFCE или кедах сидеть…
vasek
когда смотришь на эти конструкции без подготовки, то ни хрена не понимаешь… СКРИПТ НАДЕЖНЕЕ
Нет, скрипт ненадёжен, т.к. может вести себя по разному в разных оболочках и их версиях (zsh, bash и прочие).
Лучше использовать sed или awk, т.к. их синтаксис стабильнее, чем у разных версий командных интерпретаторов.
anode спасибо за помошь! Взял вариант с исключением повторных тэгов.
Использую для подключения функций из конца скрипта (чтобы не загромождать его начало) или при отсутствии нужного файла беру его из скрипта.
#!/bin/bash

tagfile(){ # [1 force] html-tag name [file] [source]: текст, заключённый в тег, из $0|$3 в файл
	flag=$(($1>0));(($1))&& shift; tagfile="${2:-/tmp/$1}"; tmp=$(which "${tagfile##*/}" 2>/dev/null) && tagfile="$tmp"
	[[ -d $tagfile ]]&& return 1 #в $PATH нет исполняемого файла с именем тэга или $2
	[[ ! -f $tagfile || ! -s $tagfile || $flag -gt 0 ]]&& sed -n '{/^# <'"$1"'>.*/,/^# <\/'"$1"'>.*/p};/^# <\/'"$1"'>.*/q' "${3:-$0}"| sed '1d;$d' >"$tagfile" #файл перезапишется, если он пуст или $1=1
	[[ ! -s $tagfile ]]&& return 1; chmod ugo+x "$tagfile" 2>/dev/null && echo $tagfile # исполняемый файл
}
funct=$(tagfile funct)&& . $funct || { echo .source Error;exit;}
checkinclude
cat $(tagfile txt)
exit

# <funct>
checkinclude(){
echo include OK
}
# </funct>
# <txt>
this is text file
# </txt>
anode
Усложним задачу?
а можно упростить задачу? Те же тэги/шаблоны, только без BEGIN, END.
Начать печатать после тэга, закончить печать при совпадении строки с этим же тэгом:
# <my tag>
11111
22222
Last Line
# <my tag>
# <my tag>
Этот текст печатать нельзя!
Повторные шаблоны не нужны…
# <my tag>
Всем спасибо, переделаю скрипт run (это комбайн для запуска часто используемых действий)
vasek
indeviral, Dobrov отсылает к своему файлу … и не хочет пояснить … но, насколько я понимаю, местоположение строки переменно (меняется в зависимости от соотвествующего тэга/запроса), и простой командой вряд ли обойдешься.
Чтобы построить алгоритм необходимо четко представлять всю эту кухню, а так одни гадания …. но могу и ошибаться.
Я чётко в нескольких постах расписал задачу - печатать между двумя строками (шаблонами) произвольный текст, игнорируя повторное совпадение шаблонов.
vasek
Образец нам так и не привели … и я так и не понял
Ваш вариант не работает, sed печатает только первую строку, а нужен только текст между двумя шаблонами, как это сделано в скрипте run: http://victor-dobrov.narod.ru/share/unix-helper.7z
#!/bin/bash

sed '/# BEGIN<my tag>/d;q' $0

# BEGIN<my tag>
	Tag text
		…
	end text
# END<my tag>
# BEGIN<my tag>
	Random Tag match, not printing…
# END<my tag>
Должно остаться только Tag text (в скрипте run это работает, но дублирующих шаблонов нет, а они могут быть…)
Задача: извлечь из тела скрипта $0 текст между двумя шаблонами, исключая сами шаблоны и используя только первое вхождение:
# BEGIN<my tag>
	Tag text
# END<my tag>
# BEGIN<my tag>
	Random Tag match…
# END<my tag>
sed также как awk захватывает всё, т.е. печатает и повторное вхождение шаблонов: строку Random Tag match…
sed -n '/^# BEGIN<my tag.*/,/^# END<my tag.*/p' $0| sed '1d;$d'
Задача: печать текста между тэгами, исключая вторые тэги и сами тэги, т.е. без строк # BEGIN<my tag>, # END<my tag>, Random Tag match…

#!/bin/bash

# эта строка не работает с пробелами в имени тэга
awk '/^# TBD<my tag/ { flag = 1; ++ctr } flag && ctr >= 2 { print } /^# END<my tag.*$/ { flag = 0 }' $0

# эта строка печатает всё, а нужен текст только первого тэга…
awk '/^# BEGIN<my tag/,/^# END<my tag.*$/' $0

exit

# BEGIN<my tag>
	Tag text
# END<my tag>
# BEGIN<my tag>
	Random Tag match…
# END<my tag>

P.S. файл-по умолчанию берётся из скрипта, так сделано у меня в run: http://victor-dobrov.narod.ru/share/unix-helper.7z
run служит для выполнения многих действий, для справки запустите его без параметров. (справка создаётся динамически)