Комбинирование операций basename {} и string's в bash

Да, Wayland использует XKB для раскладки клавиатуры. Но это не совсем правильный вопрос, потому что все работает иначе, чем в X. Помните, что Wayland - это всего лишь протокол (плюс библиотека-оболочка).

На уровне протокола в wayland есть событие wl_keyboard.keymap. Это событие содержит дескриптор файла для раскладки клавиатуры и классификатор формата. На данный момент определен только один формат: «xkb». Таким образом, клиент Wayland получит XKB-совместимую раскладку клавиш и может использовать libxkbcommon для ее интерпретации, чтобы получить правильный глиф на экране и т. Д.

Но Wayland не определяет , как выбирается эта раскладка. Это решение остается за наборщиком. В Weston он считывается из конфигурационного файла при запуске, в GNOME - из gsettings и т. Д. И это решение, таким образом, также определяет, как вы можете изменять раскладки клавиатуры во время выполнения (если это вообще возможно). В GNOME вы должны либо использовать панель конфигурации, либо напрямую установить ключи gsettings.

В протоколе X есть запросы на установку раскладки клавиатуры на уровне протокола, и это то, что делает возможными такие инструменты, как setxkbmap. У Wayland нет этих запросов, невозможно установить раскладку клавиатуры, используя только протокол Wayland.

2
31.10.2016, 00:40
1 ответ

Не делайте этого, работая напрямую на {}.

Вы использовали inline sh, поэтому передайте ему {} в качестве аргумента, а также не нужно использовать basename вообще:

find "$R" -name "*.cpp" -type f -exec sh -c '
  for f do
    mv -- "$f" "${f%.*}.cc"
  done
' sh {} +

Обратите внимание, что вы должны заключить $R в двойные кавычки, иначе это приведет к уязвимости безопасности.

6
27.01.2020, 21:54

Теги

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