Операторы If с операторами кода выхода

Я думал, что такая функциональность поставляется с самой X11, но оказалось, что она поставляется с xbindkeys, которая является связанной с X11 -программой, которая находится в категории разное .

Чтобы мультимедийные клавиши (громкость, яркость )работали, создайте~/.xbindkeysrc . Чтобы получить полезную информацию (содержимое файла по умолчанию )о том, как составлен файл, вызовитеxbindkeys -d

# ~/.xbindkeysrc

#-----VOLUME-----#
#
# Decrease volume
"pactl set-sink-volume @DEFAULT_SINK@ -1000"
   XF86AudioLowerVolume

# Increase volume
"pactl set-sink-volume @DEFAULT_SINK@ +1000"
   XF86AudioRaiseVolume

# Mute volume
"pactl set-sink-mute @DEFAULT_SINK@ toggle"
   XF86AudioMute


#----BACKLIGHT----#
#
# Increase backlight
"xbacklight -inc 10"
   XF86MonBrightnessUp

# Decrease backlight
"xbacklight -dec 10"
   XF86MonBrightnessDown

И добавить xbindkeysв автозапуск. Я добавил его в~/.xinitrc

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

-1
10.04.2020, 00:16
1 ответ

Поскольку это похоже на задание, я дам вам только инструменты и несколько советов:

  1. Если скрипту не был передан аргумент, то$1(первый аргумент скрипта )будет пустым. Вы можете проверить это с помощью [[ -z $1 ]]. Если вы хотите отобразить ошибку для слишком много аргументов, проверьте, что количество аргументов с[[ $# -eq 1 ]](будет истинным для одного аргумента ).

  2. Команда gentent passwd "$username"может использоваться для получения записи passwdдля пользователя $username. Команда завершится ошибкой с нулевым статусом выхода, отличным от -, если пользователь не существует. Это означает, что вы можете использовать if ! getent passwd "$username" >/dev/null; then...; fiдля реагирования на несуществующего -пользователя $username.

  3. 5-е поле записи passwdдля пользователя обычно содержит полное имя пользователя (нет никакой гарантии, что оно будет в форме «имя фамилия» ). В конце записи могут быть лишние запятые, которые необходимо удалить. Вы можете проанализировать вывод getent passwd "$username", используя cut -d: -f 5, чтобы получить пятое поле, а затем удалить первую запятую с помощью name=${name%%,*}.

    В некоторых системах полное имя пользователя может содержать символ &. В этих системах этот символ &следует заменить именем пользователя (, чтобы имя System &для пользователя operatorсталоSystem operator). Я не уверен, что Linux обычно делает это, но это можно сделать с помощью name=${name/&/$username}.

  4. Утилита whoвыводит список пользователей, которые в данный момент вошли в систему. Чтобы сопоставить $usernameс этим, используйте grep -e "^$username\>".\>соответствует концу слова, так что, например. antonyне соответствует при поиске или anton. grep -qполезен в операторе if.

Это соответствует структуре кода:

  1. Проверка и обработка недопустимых аргументов (отсутствует :чтение; слишком много выходов :или просто используйте сначала ). Один оператор if.
  2. Проверить и обработать недопустимое имя пользователя. Один оператор if.
  3. Получить полное имя пользователя. Присвоение переменной (s )с подстановкой команд.
  4. Проверить, вошел ли пользователь в систему (и вывести ). Один оператор if, возможно, с ветвью else.

Я не вижу цикла в этом скрипте, так что это будет рядif-операторов и присвоений переменных.

1
28.04.2021, 23:18

Теги

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