Що таке ** глобус?


84

У мене є такий шлях у моєму gulpfile з реакцією:

var path = {
  HTML: 'src/index.html',
  ALL: ['src/js/*.js', 'src/js/**/*.js', 'src/index.html'],
  JS: ['src/js/*.js', 'src/js/**/*.js'],
  MINIFIED_OUT: 'build.min.js',
  DEST_SRC: 'dist/src',
  DEST_BUILD: 'dist/build',
  DEST: 'dist'
};

Що таке подвійний глобус?

Я знаю, що таке єдиний глобус ... але що таке подвійний? одинарна глобус

Відповіді:


98

Це майже те саме, що окрема зірочка, але може складатися з декількох рівнів каталогів.

Іншими словами, while /x/*/yбуде відповідати таким записам, як:

/x/a/y
/x/b/y

і так далі (з тільки один рівня каталогів в підстановлювальних секціях), подвійна зірочка /x/**/yбуде також відповідати таким речам , як:

/x/any/number/of/levels/y

з поняттям "будь-яка кількість рівнів", що також включає нуль (іншими словами, /x/**/yбуде відповідати /x/yяк один із його варіантів).


Окрім того, як би я не хотів чимось зараховувати мейнфрейм , я вважаю, що це використовувалося ще з часів списків вибору MVS, щоб дозволити вибір наборів даних на декількох рівнях :-)


2
Це не має сенсу. Якщо * позначає 0 або більше символів, тоді цей шаблон може потенційно збігатися з / x // y, що є безглуздим. Ви насправді говорите про "будь-яку кількість символів, за якими слід будь-яка кількість символів". Хіба це не просто ... о, я не знаю ... будь-яка кількість символів ???
AleksandrH

6
@AleksandrH, ні, це не регулярний вираз у звичайному розумінні: немає відповідності символів, є лише імена каталогів. Це спеціально для ієрархічних файлових систем. На першому етапі, якби були дозволені порожні імена каталогів, це /x//yбуло б цілком дійсним. Я ніколи не бачив файлової системи, яка дозволяє це. Що стосується вашої другої точки, *засіб відповідає "будь-якій назві каталогу, лише на одному рівні" (тому не буде виходити за межі наступного /розділювача), тоді як **означає "відповідати будь-якій кількості рівнів з будь-якою назвою каталогу на кожному рівні" (може перетинати стільки /роздільники за потреби).
paxdiablo

9
Варто зазначити, що для /x/**/y/, /x/y/також включено, що акуратно.
Яссін Імоунахен

24

Зазвичай він використовується для позначення будь-якої кількості підкаталогів. Тому

src/js/**/*.js

Збігався б

src/js/files/*.js
src/js/more-files/*.js

etc
etc

8
Одна зірочка також відповідає вашим прикладам. Я думаю, ви мали намір включити додатковий підкаталог до свого другого прикладу.
Саймон Іст

1
@SimonEast, як це? src / js / files / controllers / user.js, src / js / files / models / foo / var.js
AutumnSky

е, не
найясніше

20

**відповідає будь-якому символу, включаючи косу косу риску, /
*збігається з будь-яким символом, за винятком косої риски (щоб відповідати лише імені файлу або каталогу)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.