Селекторы подстановочных знаков Unix? (Звездочки)

В Railscast Райана Бейтса о git его файл .gitignore содержит следующую строку:

tmp / ** / *

Какова цель использования двойных звездочек, за которыми следует звездочка как таковая: ** / * ? Можно было бы использовать просто tmp / * вместо tmp / ** / * не достигли такого же результата?

Погугли по проблеме, я нашел непонятную статью IBM об этом, и мне было интересно, может ли кто-нибудь прояснить проблему.

21
задан P̲̳x͓L̳ 31 March 2014 в 22:29
поделиться

2 ответа

Он говорит, что нужно войти во все подкаталоги ниже tmp, а также только в содержимое tmp.

например. У меня есть следующее:

$ find tmp
tmp
tmp/a
tmp/a/b
tmp/a/b/file1
tmp/b
tmp/b/c
tmp/b/c/file2

согласованный вывод:

$ echo tmp/*
tmp/a tmp/b

согласованный вывод:

$ echo tmp/**/*
tmp/a tmp/a/b tmp/a/b/file1 tmp/b tmp/b/c tmp/b/c/file2

Это функция zsh по умолчанию, чтобы заставить его работать в bash 4, вы выполняете:

shopt -s globstar
25
ответ дан 29 November 2019 в 21:20
поделиться

Из http://blog.privateergroup.com/2010/03/gitignore-file-for-android-development/ :

(kwoods)

"The double asterisk (**) is not a git thing per say, it’s really a linux / Mac shell thing.

It would match on everything including any sub folders that had been created.

You can see the effect in the shell like so:

# ls ./tmp/* = should show you the contents of ./tmp (files and folders)
# ls ./tmp/** = same as above, but it would also go into each sub-folder and show the contents there as well."
5
ответ дан 29 November 2019 в 21:20
поделиться
Другие вопросы по тегам:

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