колотите соответствие globstar

Запустите windowmanager после запуска x11 сервера.

Например, мой пакет для запуска xvnc:

export DISPLAY=localhost:1.0
/usr/bin/Xvnc :1 -ac -auth "/root/.Xauthority" -geometry "1200x700" -depth 8 -rfbwait 120000 -rfbauth /root/.vnc/passwd 2> /root/.vnc/ServerDaemon.log &
/bin/sleep 10
/usr/bin/fvwm 2> /root/.vnc/fvwm.log &

Я перенаправляю ошибки в файлах журнала и использую команду сна, так, чтобы Xvnc, конечно, инициализировал себя, bevor запуск fvwm менеджера окон. Но не должно быть никакой проблемы для запуска любого другого windowmanager.

Для автоматически останавливают x11 сервер, я не знаю.

18
03.03.2014, 01:01
3 ответа

Я полагаю, что это относится только к уровню подкаталогов. ** без / соответствует

  1. всем файлам и каталогам

  2. нулю или более подкаталогам

Но не исчезает полностью. **/ означает, что ни один файл в каталоге самого высокого уровня, к которому применяется **, не будет соответствовать.

Вам нужно dir/*.ext dir/**/*.ext.

8
27.01.2020, 19:46

Это работает должным образом в следующих версиях Bash, поставляемых с перечисленными дистрибутивами:

  • 4.1.2 (1) - CentOS 6.5
  • 4.1.5 (1) - Debian 6.0.10
  • 4.1 .10 (4) - Cygwin 1.7.31
  • 4.2.46 (1) - CentOS 7.1
  • 4.3.11 (1) - Ubuntu 14.04.1
  • 4.3.30 (1) - Debian 8.1

Фактически, перечисленные выше версии - это все, что я тестировал. Другими словами, я не нашел Bash 4-й версии, где бы он не работал. Параметр globstar был добавлен в Bash 4.0 см. ИЗМЕНЕНИЯ . В более старых версиях команда shopt -s globstar должна возвращать ошибку.

Тесты

1. dir / ** / *. Ext соответствует dir / file.ext :

~/tests$ ls -1 dir/**/*.ext
dir/file.ext
dir/subdir1/file.ext
dir/subdir2/file.ext

2. ** / *. Ext соответствует file.ext :

~/tests$ cd dir
~/tests/dir$ ls -1 **/*.ext
file.ext
subdir1/file.ext
subdir2/file.ext

Подготовка среды для воспроизведения тестов выше:

mkdir -p dir/subdir{1,2}
touch dir/{,subdir{1,2}/}file.ext
shopt -s globstar
10
27.01.2020, 19:46

Мне кажется, что у вас отключен / выключен globstar. Его можно включить следующим образом:

shopt -s globstar

Он не только не будет соответствовать нулевым подкаталогам, но и не будет соответствовать двум подкаталогам:

$ find dir -type f #the same as yours except with a directory inside one of the subdirectories
dir/file.ext
dir/subdir1/file.ext
dir/subdir1/subsubdir/file.ext
dir/subdir2/file.ext
$ shopt -u globstar #turn globstar off
$ #will only show files in subdirectories
$ #will not show files in dir or in subsubdir
$ echo dir/**/*.ext
dir/subdir1/file.ext dir/subdir2/file.ext
$ shopt -s globstar #turn globstar on
$ #will show all four files
$ echo dir/**/*.ext
dir/file.ext dir/subdir1/file.ext dir/subdir1/subsubdir/file.ext dir/subdir2/file.ext

Если globstar выключен, ** ведет себя так же, как *, поэтому dir / ** / *. ext дает тот же результат, что и dir / * / *. ext

$ echo dir/*/*.ext
dir/subdir1/file.ext dir/subdir2/file.ext

, что иногда заставляет меня думать, что globstar включен

, проверьте текущие настройки globstar следующим образом:

shopt | grep globstar
5
27.01.2020, 19:46

Теги

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