Точка .
означает любой символ. Но вы не хотите, чтобы это совпадало с двойной кавычкой; вы хотите, чтобы он соответствовал чему угодно , кроме двойной кавычки. Так что укажите это с помощью класса символов:
sed 's/"[^"]*"/"x"/g'
Наконец-то я нашел ответ, который, по крайней мере, работает на моих системах (Lenovo ThinkPad X201 и ThinkPad X201 Tablet,в которых используются панели LVDS ). На самом деле он отключает подсветку, но если у вас нет трансфлективного или отражающего ЖК-дисплея (, что довольно необычно ), это должно быть фактически то же самое, что и выключение ЖК-дисплея.
Сначала я установил Intel GPU Tools(README здесь для получения дополнительной информации ). В Debian это было сделано с помощью:
# apt-get install intel-gpu-tools
Этот пакет содержит программу под названием intel_backlight
, которая напрямую взаимодействует с регистрами графических процессоров Intel и, таким образом, не ограничена «безопасным диапазоном» в файловой системе sysfs
современных ядер Linux, где уровень яркости 0 всегда предполагается быть включенным на низком уровне яркости.
К сожалению, эту программу нужно запускать от имени пользователя root, и она не очень хорошо очищает свои входные данные (просто вслепую atoi()
является первым аргументом скрипта и предполагает, что это число ). Я все еще работаю над правильным решением этой проблемы, но на данный момент вы можете либо:
Я выбрал второй вариант. Я выбрал комбинацию клавиш, которая acpi_listen
определила запуск события ACPI, но которая уже не была назначена для каких-либо действий на моем ноутбуке. Я выбрал fn+f1. Теоретически, можно было бы также срабатывать на клавишу яркости -вниз, проверять, была ли яркость уже на минимуме, и если да, то выключать подсветку.
Я написал следующие файлы:
/etc/acpi/events/fnf1-toggle-lcd:
event=button/fnf1
action=/etc/acpi/toggle-thinklight-or-tablet-lcd.sh "%e"
/etc/acpi/toggle-thinklight-or-tablet-lcd.sh:
#! /bin/bash
# intel_backlight appears to require root privs.
# is the light on or off?
export INTEL_BACKLIGHT="/usr/bin/intel_backlight"
export light_state=$("$INTEL_BACKLIGHT" | sed 's/current backlight value: //g'|sed 's/%//g')
if [ "$light_state" -eq 0 ]; then # if the backlight is currently off
# restore brightness level
cat /root/brightness > /sys/class/backlight/acpi_video0/brightness
else # the backlight is currently on
# back up current brightness level
cat /sys/class/backlight/acpi_video0/brightness > /root/brightness
# turn off backlight
"$INTEL_BACKLIGHT" 0
fi
Убедитесь, что сценарий оболочки помечен как исполняемый.
Может быть, не совсем то, что хотелось, и я знаю, что опаздываю на вечеринку, но здесь это работает.
Кроме того, на панелях eDP может работать выполнение echo 0 > /sys/class/backlight/acpi_video0/bl_power
. Это абсолютно не будет работать на панелях LVDS, потому что, по-видимому, некоторые разработчики ядра посчитали это хорошей идеей.