Not: Cevabım OP'nin durumunda geçerli DEĞİLDİR ve yalnızca aşağıda belirtilen kuralları izleyen araçlar için geçerlidir ve tam olarak sadece -
(tire) adlı bir dosya için geçerli değildir , bu da genellikle standarttan okumayı belirtmek için özel bir durumdur. girdi bekleniyor. Kabul edilen cevaba bakınız.
Bunu burada bırakarak yanıtlar ararken karşılaşabileceğiniz diğer durumlar için yararlı bilgiler içerir.
Çift Kes!
--
Son argümanı belirtmek için standart çift tire ( ) kuralını kullanın:
less -- -FILENAME
Misal
$ echo "meh" > -badname
$ less -badname
Number is required after -b
$ less -- -badname # GREAT SUCCESS!
Whhhaattt?
Bu --
argüman, kabuk yardımcı programlarının ve komut satırı araçlarının çoğu uygulaması tarafından desteklenen bir kuraldan kaynaklanır ve çoğu kabuk, CLI araçlarını uygularken izlemeniz gerektiğini gözle görülür şekilde savunur.
Açık Grup tarafından tavsiye edilir
OpenGroup ayrıca Temel Spesifikasyonunun Yardımcı Program açıklaması varsayılanları (v6) bölümünde de bahseder :
Varsayılan Davranış: [...] Seçenekleri kabul etmeyen, ancak işlenenleri kabul eden standart yardımcı programlar, atılacak ilk argüman olarak "-" ifadesini tanıyacaktır.
"-" öğesinin tanınması şartı, uygun uygulamaların, işlenenlerini uygulamanın bir uzantı olarak sağlayabileceği keyfi seçeneklerden korumak için bir yola ihtiyaç duymasıdır. Örneğin, standart yardımcı program foo hiçbir seçenek almayan olarak listeleniyorsa ve uygulamanın kendisine ön tire ile bir yol adı vermesi gerekiyorsa, bunu güvenli bir şekilde yapabilir:
foo -- -myfile
ve -m uzantısı olarak kullanılan sorunlardan kaçının.
Ve Yardımcı Program Sözdizimi Yönergeleri'nde (v7):
Yönerge 10:
Seçenek bağımsız değişkeni olmayan ilk bağımsız değişken, seçeneklerin sonunu belirten bir sınırlayıcı olarak kabul edilmelidir. Aşağıdaki argümanlar '-' karakteriyle başlasalar bile işlenen olarak ele alınmalıdır.
Bash tarafından tavsiye edilir
Burada, bash kılavuzundan, onu destekleyen yapıları hakkında alıntı:
Aksi belirtilmedikçe, bu bölümde belgelenen her yerleşik komut, seçeneklerin sonunu belirtmek için önce - kabul eder - seçeneklerini kabul eder.
:, True, false ve test yerleşikleri seçenekleri kabul etmez ve özel olarak işlemez. Çıkış, oturumu kapatma, kesme, devam etme, izin verme ve kaydırma yerleşikleri, gerekmeden - ile başlayan argümanları kabul eder ve işler. Bağımsız değişkenleri kabul eden ancak seçenek kabul etme olarak belirtilmeyen diğer yerleşikler, bu yorumu önlemek için - geçersiz seçenekler olarak ve gerektirdiği gibi bağımsız değişkenleri yorumlar.
Eko'nun yorumlamadığını unutmayın - seçeneklerin sonu anlamına gelir.
İlave Okuma