Можно Я блокирую экран удаленного компьютера и по-прежнему оставляю его видимым для других на его стороне, но оставляю его разблокированным для меня на моей стороне?

Ваша команда ls -ld *\(2015\) должна быть разделена на две части:

  • Сглаживание имени файла выполняется оболочкой. Таким образом, разные оболочки могут работать по-разному.
  • Команда ls печатает длинную строку -l для каждого из имен файлов, перечисленных в результате расширения, выполненного оболочкой. Избежать перехода внутрь каталогов можно с помощью -d.

Shell

В общем, это будет работать со всеми оболочками для получения всех каталогов (с добавленным концевым /):

echo */                           ### disregarding effects of `-` and `\`

И для получения всех каталогов, которые не соответствуют окончанию ):

echo ! (*\))/
printf '%s ' !(*\))/ ### избежать интерпретации \.
echo -E ^*\)/

С расширенным глобированием, активным для bash и zsh (ksh использует его по умолчанию).

shopt -p extglob            ### for bash (on by default in interactive use).
setopt extendedglob         ### for zsh

Удаление корешка /

set -- */
printf '%s ' "${@%/}"

Или для bash и ksh (например):

set -- !(*\))/
printf '%s ' "${@%/}"

zsh предлагает более простой способ удаления корешка \.

[tag:zsh]`echo -E ^*\)(/)`

О [!\)]

Обратите внимание, что выше я упустил (намеренно) использование [ ].

Использование [!\)] может показаться эквивалентным (для одного символа):

echo !(*\))/
echo *[!\)]/

Но квадратные скобки не работают для строки. Это не эквиваленты:

echo !(*\(2015\))/
echo *[!\(2015\)]/

Однако, следует отметить, что echo *[!\)]/ работает для POSIX-оболочек.

ls -ld -- *[!\)]/                               ### POSIXly.

Соедините ls и */

В зависимости от оболочки, и от того, является ли проблема в конце / проблемой или нет.
Две части ls и shell вместе взятые могут быть:

ls -ld -- !(*\(2015\))/              ### An example for bash and GNU ls.

Альтернативы

Сама команда (GNU) ls включает способ избежать шаблонов:

ls -l --ignore='*)'

Bash предлагает GLOBIGNORE:

GLOBIGNORE='*)/'; echo */

Может быть find?

find . -maxdepth 1 ! -name . -prune -type d ! -name '*2015)'

Но find кажется мне излишеством для этой простой необходимости.

4
15.03.2019, 21:21
1 ответ

А как насчет xtrlock?

xtrlock locks the X server till the user enters their password at the keyboard.

While xtrlock is running, the mouse and keyboard are grabbed and the mouse cursor becomes a padlock. Output displayed by X programs, and windows put up by new X clients, continue to be visible, and any new output is displayed normally.

The mouse and keyboard are returned when the user types their password, followed by Enter or Newline. If an incorrect password is entered the bell is sounded. Pressing Backspace or Delete erases one character of a password partially typed; pressing Escape or Clear clears anything that has been entered.

If too many attempts are made in too short a time further keystrokes generate bells and are otherwise ignored until a timeout has expired.

The X server screen saver continues to operate normally; if it comes into operation the display may be restored by the usual means of touching a key (Shift, for example) or the mouse.

В моей системе Debian он находится в репозиториях:

sudo aptitude install xtrlock
2
27.01.2020, 20:59

Теги

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