Я столкнулся с другим вопросом в AskUbuntu, на который был хороший ответ , но мне пришлось немного изменить его, чтобы системы.
Комментарии Луиса и Сергея. Я придумал это решение, которое работает для меня в Ubuntu 16.04 (Xenial), и я буду использовать его в других системах Linux, которые я использую.
Я установил xcape и поместил следующие строки кода в свой файл .profile
в моем домашнем каталоге.
Из-за того, что различные диспетчеры дисплея (gdm / kdm / sddm / и т. Д.) Ведут себя странно и сбрасывают setxbmap
после приостановки / возобновления или блокировки / разблокировки, я обнаружили, как установить параметры таким образом, чтобы они наследовали их и не сбрасывали их все время. Поскольку я часто приостанавливаю и возобновляю работу, мне нужно было убедиться, что у меня не запущено много копий xcape
, что решено в новом скрипте ниже.
Сначала измените конфигурацию клавиатуры с помощью sudo gedit / etc / default / keyboard
и установите XKBOPTIONS = "ctrl: nocaps"
, а затем в вашем ~ / .xprofile
поместите единственную строку ниже.
ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &
Надеюсь, различные разделы скрипта сэкономят вам время / проблемы и предотвратят зависание входа в систему.Сначала он проверяет, запущен ли уже экземпляр, и убивает его, поскольку единственное, что делает xcape
, - это сопоставляет Ctrl с Esc, это безопасно, тогда часть хэша
гарантирует, что у вас есть xcape
установлен, иначе ваша система может зависнуть при попытке входа в систему, потому что все сценарии запуска должны завершиться без ошибок.
setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'
Сергей:
Я использовал gnome-tweak-tool для сопоставления Caps Lock и Ctrl, так как в Ubuntu 14.04 в системных настройках нет раскладки клавиатуры. Тогда xcape -e 'Control_L = Escape' не сработал, но после использования xcape -d я обнаружил, что Caps Lock генерирует ключевой код 66 и переназначил его соответственно: xcape -e '# 66 = Escape'. - Сергей Белозёров 4 сен. '14 в 10:08
Луи:
Согласно этому сообщению в блоге, это можно сделать только с помощью xcape: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Луи Симоно, 4 августа 2015 г., 10:06
Если вы пишете для bash
, вы можете использовать массив для хранения набора пользователей и другой массив для создания соответствующего синтаксиса для find
для соответствия этим пользователям:
#!/bin/bash
# The beginning of the userids we need to match
match=br
# Find the matching set of users
users=($(
getent passwd |
awk -F: -vm="$match" 'BEGIN { re = "^" m } $1 ~ re {print $1}'
))
# Build the list of users ("find ( -user XX -o -user YY -o user ZZ )...")
finds=()
for user in "${users[@]}"
do
finds+=('-o' '-user' "$user")
done
[[ ${#finds[@]} -gt 0 ]] && finds=('(' "${finds[@]:1}" ')')
# Execute the find command with the set of users
find. "${finds[@]}" -ls
Как всегда, вы можете добавить к команде find
префикс, например, echo
, чтобы увидеть, что будет выполнено. (Или вы можете запустить с bash -x
, чтобы включить отчет об отладке строки -по -.)
Если все, что вам нужно, это просто листинг, я бы выбрал старый добрый grep
вместо вывода find
. Это было бы медленнее, но гораздо меньше печатать.
В самом простом случае вы можете попробовать это для вашего примера:
find -printf '%u %p\n' | egrep '^br_'
Это дает вам список файлов, принадлежащих пользователям br_*
, показанный с именем пользователя и именем файла в каждой строке.
Затем вы можете расширить вывод, изменив -printf
строку формата .
Например, чтобы он больше походил на ls
вывод:
find -printf '%-8.8u %-8.8g %M %8s %t %p\n' | egrep '^br_'
Чтобы сделать командную строку максимально короткой, важно поместить имя пользователя в самое начало, чтобы часть egrep
можно было сделать такой короткой.
Чтобы увидеть все, что можно указать в строке формата, перейдите сюда , затем найдите -printf format
.
Будьте осторожны, если ваши файлы содержат символы новой строки в именах, это решение может иметь проблемы с их отображением.