Komut argümanları olarak bir tire “-” ile başlayan dosya adlarını nasıl kullanırım?

18

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

Örneğin, pdfgrep adlı dosyayı -2013-01-01.pdf adlı bir dosyada kullanmaya çalışıyorum ancak 2, 0, 1, 3 vb. için tanımlanmış bir seçenek olmadığından şikayetçi.

Dosya adını "-" ile başlamayan bir şeye dönüştürmek çözer, ancak dosyalar benim tarafımdan oluşturulmadığından bu bir seçenek değildir. Sadece bildiğim belirli bir değişikliği kontrol etmek istiyorum.

    
sordu Kristoffer 05.04.2013 01:34

2 cevap

21

Komut satırında, daha fazla komut satırı kullanılmayacak bir programa sinyal vermek için sıklıkla -- kullanılır. Bu, özellikle bir programın bir seçenek olarak yorumlamaya çalışacağı bir çizgi içeriyorsa yararlı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 komutumuz 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 için -- değerini anlamak için programlandı. Çoğu program aynı şeyi yapar, ancak tüm programlar -- değerini anlamaz. Yapılmayan programlar için, çözüm dosya adını ./ ile başlatacak, bunun gibi:

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

    Bu, herhangi bir komutla çalışmalıdır, bir nedenden ötürü komut bir yolu kabul edemez, sadece saf bir dosya adı.

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

    
verilen cevap user76204 05.04.2013 01:52
15

Dosya adını ./ (ya da çalışan başka bir akraba veya mutlak yol) ile siz hazırlıyorsunuz. Bu şekilde taşınabilir.

Örnek:

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

Seçeneklerin sonunu belirtmek için -- kullanımı her zaman mevcut değildir. Bazı komutlar bunu bilecek, bazıları olmayacak. Ve bu farklı sistemlerde değişecek. Sonuçta, daha az taşınabilir.

    
verilen cevap Olivier Dulac 05.04.2013 14:24

Etiketlerdeki diğer soruları oku