Bash söz konusu olduğunda standart olmayan bir şekilde davranır -.
POSIX diyor ki:
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 -karakterle başlasalar bile işlenen olarak ele alınmalıdır .
[...]
Yönerge 13:
Okuma veya yazma amacıyla açılacak dosyaları temsil etmek için işlenen kullanan yardımcı programlar için, -işlenen yalnızca standart girdi (veya bir çıktı dosyasının belirtildiği bağlamdan net olduğunda standart çıktı) veya adlı dosya -.
Ve
POSIX.1-2017'nin Shell ve Utilities hacminde bu yönergelere uygun olarak tanımlanan bir yardımcı programın, işlenenin -standart girdi veya çıktı anlamına gelmesini kabul etmesi ya da kabul etmemesi gerektiğinde , bu kullanım OPERANDS bölümünde açıklanmaktadır. Aksi takdirde, böyle bir yardımcı program dosyaları temsil etmek için işlenenler kullanıyorsa, işlenenin -standart girdi (veya standart çıktı) mı yoksa adlı bir dosya mı olduğu uygulama tarafından tanımlanır -.
Ama sonra man 1 bashokur:
A --seçeneklerin sonunu bildirir ve daha fazla seçenek işlemeyi devre dışı bırakır. Tarihinden sonraki tüm argümanlar --dosya adı ve argüman olarak değerlendirilir. Argümanı -ile eşdeğerdir --.
Dolayısıyla Bash için -ne standart girdi ne de dosya anlamına gelir, dolayısıyla bir şekilde standart değildir.
Şimdi özel durumunuz:
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
Ben şüpheli farkında olmayabilir bu komut yazarı -eşdeğerdir --bu durumda. Ben şüpheli yazar emin olmak istedim bashstandart giriş okuyacaktır, beklediklerinden -kılavuz 13 uyarınca işe.
Ancak, talimatlara göre çalışsa bile, -burada gereksiz olacaktır , çünkü bashstandart girişinin ne zaman bir boru olduğunu algılar ve buna göre hareket eder (verilmediği sürece -c).
Yine -de kılavuz ilkelere göre çalışmaz, gibi çalışır --. Yine --kendinden sonra başka argümanlar vardır çünkü burada gereksizdir.
Bence son -hiçbir şey değişmez. Komut onsuz çalışır.
Genel olarak nasıl --ve -yararlı olabileceğini görmek için aşağıdaki örneği inceleyin.
catBenim Kubuntu'da hem yönergelere uyar ve ben faydasını göstermek için kullanacak -ve --.
Adlı bir dosya olsun foo. Bu dosyayı yazdırır:
cat foo
Adlı bir dosya olsun --help. Bu dosyayı yazdırmaz:
cat --help
Ancak bu, şu dosyayı yazdırır --help:
cat -- --help
Bu, adlandırılan dosyayı --helpstandart girdiden gelenlerle birleştirir :
cat -- --help -
Gerçekten ihtiyacınız yok gibi görünüyor --, çünkü her zaman ./--helpbir dosya olarak yorumlanacak olanı geçebilirsiniz . Ama düşün
cat "$file"
değişkenin içeriğinin ne olduğunu önceden bilmediğinizde. Sadece başına geçemezsiniz ./, çünkü bu mutlak bir yol olabilir ve ./onu kıracaktır. Öte yandan adlı bir dosya olabilir--help (çünkü neden olmasın?). Bu durumda --çok faydalıdır; bu çok daha sağlam bir komut:
cat -- "$file"