“-” tire ile başlayan dosya isimlerini komut argümanları olarak nasıl kullanırım?


20

Bu basit bir soru olabilir, ancak "-" ile başlayan dosyaları komut satırı programlarıyla nasıl kullanırım?

Örneğin, pdfgrepadlı bir dosyayı kullanmaya çalışıyorum, -2013-01-01.pdfancak 2, 0, 1, 3 vb. İçin tanımlanmış seçenek olmadığından şikayet ediyor.

Dosya adını "-" ile başlamayan bir şeye değiştirmek onu çözer, ancak dosyalar bana göre yaratılmadığından bu bir seçenek değildir. Sadece geleceğimi bildiğim belirli bir değişikliği kontrol etmek istiyorum.


Bu dos işe yaramazsa, bana daha önce olduğu gibi aynı hataları verir
Kristoffer

3
Örnek olarak grep -i dfv -- -myfile1 -myfile2,.

bu çalışır! Teşekkürler! cevap ver ve gelecek nesiller için kabul edilmiş olarak işaretleyebilirim :)
Kristoffer

@AliNa, tırnak kullanımı özellikle sizin için pdfgrep ile işe yaradı mı? Benim için işe yaramadı. Lubuntu kullanıyorum.

4
@AliNa: Kotasyon işaretleri program tarafından değil, kabuk tarafından yorumlandığı için çalışmayacaktır.
Hammar

Yanıtlar:


22

--Kullanılabilir başka komut anahtarı kullanmayacağınız bir programın sinyalini vermek için komut satırında çok sık kullanılır. Bu özellikle, bir programın bir seçenek olarak yorumlamaya çalışacağı bir çizgi içeren bir dosya içeriyorsa faydalıdır.

  1. Olmadan, --oluşturulan bir hata var:

    $ pdfgrep -i posix -find.pdf -xorg.pdf
    
    pdfgrep: invalid option -- 'f'
    pdfgrep: invalid option -- 'd'
    pdfgrep: invalid option -- '.'
    pdfgrep: invalid option -- 'p'
    pdfgrep: invalid option -- 'd'
    pdfgrep: invalid option -- 'f'
    
  2. --Kullanılan ile başarılı bir emir var:

    $ pdfgrep -i posix -- -find.pdf -xorg.pdf
    
    -find.pdf: on the command line. Currently-implemented types are emacs (this is the default), posix-awk,
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    -find.pdf: posix-basic, posix-egrep and posix-extended.
    
  3. pdfgrep--aşağıdaki komut satırı argümanlarının seçenek olmadığı anlamına gelmek üzere programlanmıştır . Çoğu program aynı şeyi yapar, ancak tüm programlar anlamaz-- . Yapmayan programlar için çözüm ./şunun gibi dosya ismini hazırlamaktır :

     pdfgrep -i posix ./-find.pdf ./-xorg.pdf
    

    Bu, herhangi bir komutla çalışmalıdır, bir nedenden dolayı komut bir yolu kabul edemezse, yalnızca salt bir dosya adıdır.

Komut satırına genel bir giriş için bu kullanışlı PDF'ye bakın .


4
Ne yazık ki, --yok değil çalışmak tüm komut satırı programlarında. Ben gelen almıştı OP tarafından bu yorumunpdfgrep tanımıyor bunlardan biridir --. Ancak buradaki kabul başka türlü önerir. Her durumda bir programın tanınması için kodlanması gerekir --. Birçok program, tanıdıklarını argümanlarını çözümlemek için kütüphaneleri kullanır --. Fakat bazıları bilmez, bazıları ise tanımak için kodlanmamıştır --.
Eliah Kagan

3
--Alışılmış geçici çözümü tanımayan programlar ./için dosyanın önüne:pdfgrep ./-2013-01-01.pdf
Carlos Campderrós

2
Evet, öne koymak ./en taşınabilir ve sağlam çözümdür. Herhangi bir programda, herhangi bir unix sürümünde çalışır.
hlovdal

16

Dosya adını önceden ./(veya çalışan başka bir göreceli veya mutlak yolla) hazırlarsınız. Bu şekilde taşınabilir.

Örnek:

for zefile in ./*.tmp
do
   rm -f "$zefile"
done

--Seçeneklerin sonunu belirtmek için kullanımı her zaman mümkün değildir. Bazı komutlar bunu bilecek, bazıları bilmeyecek. Ve bu farklı sistemler arasında değişecektir. Sonunda, daha az taşınabilir.

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.