Globbing kabuğun bir özelliği midir?


12

Ben gibi birçok soru ve cevapları okumak bu ve bu bir

Jokerlerin bir komut çalıştırmadan önce kabuk tarafından genişletildiğini ve kabuğun bir özelliği olduğunu biliyorum. Ayrıca joker karakterler birçok argümanı kabul edebilen komutlarla çalışır. Gelen find . -name *.rb biz geçerli dizinde birden fazla dosya varsa findbulmak birden fazla argüman ve bu vardır çözmek için yollar kabul edemez, çünkü bize bir hata verecektir:

find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb

Yıldız işaretinden kaçarız ve kabuğun genişlemesini önleriz, ancak joker karakterler kabuğun bir özelliğidir; Yıldız işaretinden kaçtığımız zaman anlamını bilmiyor ve adında bir dosya bulmalı *.rb, bu durumda yıldız işareti nasıl genişletiliyor?

Yanıtlar:


21

Evet, kabuk *dizindeki herhangi bir karakteri olan *.rbtüm dosyalar ve herhangi bir karakteri olan ve biten tüm dosyalar olarak anlar .rbve onu genişletir.

findKomut kendisi globbing kabul eder.

Eğer alıntı yapmazsanız , komut argümanını görmeden önce* kabuk onu genişletir , bu yüzden bir glob yerine iletilir , dizindeki glob ile eşleşen tüm dosyaların isimleri iletilir ve bunları yorumlamaya çalışır büyük olasılıkla bir hataya neden olacak veya en azından istediğiniz gibi olmayacak bağımsız değişkenler olarak (yalnızca geçerli dizinde eşleşen dosya yoksa doğru şekilde çalışacaktır)find*.rbfindfindfind


teşekkür ederim, demek istediğim bu bir glob değildir ama bazı komutlar joker karakterleri genişletebilir mi? ya da globbing hakkında anlamadan bir kabuğumuz varsa, bu komutların globbing hakkında bildiği gibi onları genişletebileceğini söyleyebilir miyiz?
Sinoosh

5
eğer *alıntılanırsa, kabuk onu genişletmez ve glob dahil argüman, glob'u anlayabilen komuta iletilir - her zaman alıntılanması gereken regex'i kabul eden komutlar için aynıdır ...
Zanna

1
Zevkim

7
@Sinoosh: Tüm komutların glob sözdizimini anlamadığını unutmayın. Sadece bir özellikfind
slebetman

1
@Sinoosh Find joker karakteri gerçekten "genişletmiyor", karşılaştığı her dosya adıyla eşleşmesi için bir test olarak kullanıyor. Geleneksel anlamda joker karakterleri genişleten (çok) birkaç komut vardır - unzip ve 7z, örneğin çoklu argümanları açmak için kullanabilir (argümanları normalde " [archive filename single argument] [list of files to extract]" biçiminde olduğunda ).
Random832
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.