Nant / Ant adlandırma kalıplarını nasıl kullanırım?


99

Nant için adlandırma kalıplarının sözdizimsel iç kısımlarını her zaman unuttuğumu itiraf etmeliyim (örneğin, dosya kümelerinde kullanılanlar). Çift yıldız / tek yıldız işareti aklımda çok unutulabilir görünüyor.

Birisi adlandırma kalıpları için kesin bir rehber sağlayabilir mi?


3
Referansı okudum. Ve yeniden okuyun. Ve yeniden okuyun. Bence gerçekten çok zayıf örnekler var ve mesajında ​​net değil.
berko

Belki tam olarak neyi elde etmeye çalıştığınızı belirtebilirsiniz ve birisi daha iyi bir cevap verebilir?
Andy Whitfield

Yanıtlar:


240

Kurallar:

  • tek bir yıldız (*), bir yol adı içinde sıfır veya daha fazla karakterle eşleşir
  • çift ​​yıldız (**) , dizin seviyelerinde sıfır veya daha fazla karakterle eşleşir
  • soru işareti (?), bir yol adı içinde tam olarak bir karakterle eşleşir

Bunun hakkında düşünmenin başka bir yolu da çift yıldız (**) eğik çizgiyle (/) eşleşir, ancak tek yıldız (*) eşleşmez.

Diyelim ki dosyalara sahipsiniz:

  1. bar.txt
  2. src / bar.c
  3. src / baz.c
  4. src / test / bartest.c

Sonra desenler:

  • *.c             hiçbir şeyle eşleşmez (geçerli dizinde .c dosyası yok)
  • src/*.c     2 ve 3 maçları
  • */*.c         2 ve 3 ile eşleşir (çünkü * yalnızca bir düzeyle eşleşir)
  • **/*.c       2, 3 ve 4 ile eşleşir (çünkü ** herhangi bir sayıda seviyeyle eşleşir)
  • bar.*         maç 1
  • **/bar.*   1 ve 2 ile eşleşir
  • **/bar*.* 1, 2 ve 4 ile eşleşir
  • src/ba?.c 2 ve 3 maçları    

5
Bunun Nant referansından çok daha iyi bir açıklama olduğunu düşünüyorum. Şerefe!
berko

1
Src / * / ** neyle eşleşir? 4 olmasını beklerdim, ancak maven ile olan deneyimim, ihtiyacınız olan klasörlerdeki herhangi bir dosyayla eşleştiğinizi gösteriyor gibi görünüyor src / * / * / **
Matthew Buckett 21

1
ne **.ceşleşecek?
chharvey

3
Artık Ant kullanmıyorum, bu yüzden sonraki soruları cevaplayacak bir yerde değilim. Yeni bir soru sormalı veya daha da iyisi cevabı bulmalı ve ardından cevabıma bir düzenleme göndermelisiniz.
benzado

1
@sitaktif Bunu düşünmenin bir yolu bar.txtörtük olmasıdır ./bar.txt( .mevcut dizin anlamına gelir). Bu liste gerçekten Yani ./bar.txt, ./src/bar.cvs. ve ./varsayılır.
benzado

16

İşte belgelerden çok açık olmayan birkaç ekstra kalıp eşleşmesi. Benzado'nun cevabındaki örnek dosyalar için NAnt kullanılarak test edilmiştir:

  • src**                      2, 3 ve 4 ile eşleşir
  • **.c                        2, 3 ve 4 ile eşleşir
  • **ar.*                    1 ve 2 ile eşleşir
  • **/bartest.c/**  maç 4
  • src/ba?.c/**        2 ve 3 maçları

2
küçük not: karınca ile (1.8.2) **. c ** / * yerine
geçmez

4

**Dosya adlarını eşleştirmek için tek semboller yıldız ( * = multi characters) ve soru işareti ( ? = single character) kullanılırken, çift ​​yıldız işareti ( ) klasör adları eşleşmesiyle ilişkilendirilir .


3

Check out Nant referansı . Dosya kümesi modelleri şunlardır:

'*', sıfır veya daha fazla karakterle eşleşir, örneğin * .cs
'?' bir karakterle eşleşir, örneğin? .cs

Ve '**' bir dizin ağacıyla eşleşir, örneğin src / ** / *. Cs, src'nin herhangi bir alt dizinindeki tüm cs dosyalarını bulur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.