Эта проблема все еще несколько беспокоит меня, но я собрал многоцелевое решение, которое очень близко к тому, что исходный вопрос искал до такой степени, что я помечаю этот вопрос как «решенный».
Эти изменения в xorg.conf
из OP могут быть удалены, поскольку функциональность будет воспроизведена другим способом:
Section "ServerFlags"
Option "DontZap" "false"
EndSection
Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
В большинстве руководств по использованию .xinitrc
предлагается добавить строку, подобную этой, для запуска выбранного рабочего стола при запуске Xorg:
exec cinnamon-session;
Однако в .xinitrc
] файл, все, что находится после оператора exec
, игнорируется. Поэтому измените его так, чтобы просто вызывать рабочий стол без exec
:
cinnamon-session;
Затем добавьте clear
в строку под ним, чтобы при завершении сеанса рабочего стола экран очищался:
cinnamon-session;
clear;
Из-за времени, затраченного на завершение сеанса, от завершения сеанса может остаться пара строк (и это то, что я имею в виду, когда говорю, что эта проблема все еще меня беспокоит; я не понял, чтобы решить эту часть полностью).
Я упоминал на шаге 1, что функция блокировки Xorg будет реплицирована другим способом, и это происходит здесь.Этот конкретный пример уникален для Cinnamon, но может быть аналогичная команда для вашего рабочего стола. Создайте сценарий оболочки со следующими двумя строками:
#!/usr/bin/env bash
cinnamon-session-quit --logout --force --no-prompt;
Сделайте сценарий исполняемым с помощью chmod + x quit-x.sh
(или как вы его назвали). Причина, по которой мне пришлось сделать крошечный Сценарий оболочки для выполнения этой задачи вызван тем, что у меня были проблемы с сопоставлением комбинации клавиш с командой с параметрами, но сопоставить ее со сценарием было несложно (см. шаг 4).
Это также сильно зависит от рабочего стола. Настройки для этого в Cinnamon находятся в приложении «Системные настройки» в разделе «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Щелкните «Добавить настраиваемый ярлык», дайте ему имя (например, «Выйти X»), присвойте ему ярлык (я выбрал Alt-T
) и укажите его на свой настраиваемый сценарий. Теперь перейти к терминалу совсем несложно.
* в регулярных выражениях. * И * относятся к количеству, а не к символам, точнее, это означает ' ноль или более ». Кроме того, . означает «любой отдельный символ» .
Итак, когда вы сложите их вместе, вы получите «ноль или более любых символов» . Например, такие строки:
будут соответствовать
. Последнее важно, оно показывает, что . * тоже ничего не может соответствовать.
Использование одного *, как я уже сказал, является счетчиком. Поэтому, когда вы ставите это после буквы, такой как 'l' , * означает 'ноль или более l' .
Обратите внимание, если мы введем grep для l * x
, это будет соответствовать l ... x
, но, вероятно, не по той причине, которую вы думаете.
% echo "l...x" | grep "l*x"
l...x
Соответствует завершающему «x». «L» не имеет ничего общего с тем, почему это выполняется, кроме того факта, что «x» предшествует «ноль или более l» .
Для оболочки (например.bash), когда джокеры используются для сопоставления имен файлов, *
и ?
- это сами символы - они представляют собой символ (символы).
Для регулярного выражения, с другой стороны, *
, ?
, {n, m}
(диапазон вхождений) и +
(только egrep
) сами по себе ничто. Они всегда относятся к предыдущему символу / атому - независимо от того, является ли это фактическим символом (например, L
или 5
), .
(джокер), который может представлять любой символ, диапазон символов (например, [af]
) или шаблон из нескольких символов (только egrep; например, (abba)
- где «abba» считается единицей). Таким образом, символы *
и ?
сами по себе ничего не представляют, а говорят о том, сколько раз предыдущий символ (который может быть шутником для любого или группы, рассматриваемой как единое целое) должен повторяется.
Если вы вспомните об этом различии между тем, как оболочка и регулярное выражение используют *
и ?
, оно должно встать на свои места.
Итак, для регулярного выражения:
.
- представляет ровно одно вхождение любого символа a..a
- соответствует двум символам a с двумя символами любого вида между . *
- соответствует 0, 1 или более вхождениям любого символ B *
- соответствует 0, 1 или более вхождению «B» Если вы хотите найти все, что начинается с «l» и заканчивается на «x», попробуйте регулярное выражение «l. * X». Здесь "." и «*» - специальные символы, представляющие один допустимый символ и символы не менее нулевой длины соответственно. Здесь перед "*" стоит ".", Так что все, что приходит на место "." повторяется в соответствии с определением "*", как указано выше.