Argümanların ve seçeneklerin anlamlarını değiştirme konusunda karışıklık, resmi bir standart tanım var mı?


11

Komutların sözdizimi ile ilgili seçeneklerin ve argümanların ne olduğunu anlamada kafa karıştırıcı bir varyasyonla karşılaştım.

Örneğin, aşağıdaki gibi tanımlarla karşılaştım:

  • command -a -b -c d e f

    bazıları arasında -a -b -c, seçenekler veya anahtarlar d e folarak adlandırılır ve bağımsız değişkenler olarak adlandırılır.

  • command -a -b -c d e f

    bazıları, örneğin bir bashel kitabı, tüm -a -b -c d e fargümanları çağırır ve hepsine $1 $2 $3 $4 $5 $6sırasıyla bir komut dosyasından erişilebildiğini açıklar .

  • command -a b=c

    bazıları -abir seçeneği, bargümanı ve cdeğeri çağırır , bazıları ise onları ilk iki noktada olduğu gibi, tüm -a b cargümanları çağıran bir çeşitte karıştırır .

Bu üç versiyon sadece farklı arama çeşitlerinin bolluğu için örneklerdir, hepsini nasıl listeleyeceğimi bile bilmiyorum, ancak kesin olarak sabit bir adlandırma kuralı olmadığını fark ettim.

Ya da en azından, bildiğim standart bir adlandırma kuralı yok, çünkü farklı rastgele kaynaklarla karşılaştım, ancak resmi Linux ve GNU'ya bağlı siteler veya kılavuzlar arasında bile bu tutarsızlıkla karşılaşabildim.

Referans verebileceğim tartışılmaz bir resmi adlandırma şeması var mı?


İkinci form, kendi bakış açısından% 100 doğrudur. Bağlam çok önemlidir.
Oskar Skog

Yanıtlar:


18

POSIX standardının "Utility Argument Syntax" bölümünden uyarlanmıştır :

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

Örnekteki yardımcı program adlandırılmıştır utility_name. Bunu seçenekler , seçenek bağımsız değişkenleri ve işlenenler izler .

-Karakterler ve tek harf veya rakamlardan oluşan argümanlar seçenekler (veya tarihsel olarak bayraklar ) aolarak bilinir . Bazı seçeneklerin ardından gösterildiği gibi bir seçenek bağımsız değişkeni gelir . Son seçenekleri ve seçenek bağımsız değişkenlerini izleyen bağımsız değişkenlere işlenen adı verilir .[-c option_argument]

Standart ayrıca "argümanı"

Kabuk komut dilinde, bir işlevden argvbiri, execişlevlerden biri tarafından oluşturulan dizideki tek bir dizenin eşdeğeri olarak iletilir . Bağımsız değişken, komut adını izleyen seçeneklerden, seçenek bağımsız değişkenlerinden veya işlenenlerden biridir.


utility_nameKomut satırındaki her şey yardımcı programın bağımsız değişkenleridir ve hepsi kabuk parametresiyse konum parametrelerinde görünür . Seçenek, seçenek-bağımsız değişken ve işlenen terimleri, komut satırında bu bağımsız değişkenler için daha spesifik adlardır.

"İşaretle" ve "değiştir" seçeneği "seçenek" ile eşanlamlıdır.

Bu durumuda

utility -a b=c
  • -ave b=cargümanlardır,
  • -abir seçenektir ise yarar (örneğin olarak tanır lnyarar hiçbir sahiptir -x, böylece seçeneği -xiçin bir seçenek değildir lnaçıkçası, ve ln -xtanısal bir mesaj tetikler),
  • b=cBir seçenek-argümanı eğer-a seçenek, bir argüman alır, aksi takdirde bir işlenen var,
  • bve cvardır değil kendileri seçenekler, seçenek-argümanlar değil işlenenler.

Yukarıdaki metnimden de fark ettiğiniz gibi, bir yardımcı programın özetinden (yardımcı program kılavuzunda verildiği gibi) çalışmak, komut satırında yazılan genel bir komutun kodunu çözmeye çalışmaktan daha kolay olurdu. El kitabı hangi seçeneklerin seçenek argümanlarını aldığını ve hangi argümanların işlenen olduğunu açıkça belirtecektir.

cBir "değer" aramak IMHO mükemmel tamam. Standartlaştırılmış bir şey değildir, ancak " cverilen değerdirb " derseniz çok azı sizi yanlış anlayabilir . Söz konusu kamu hizmeti bağlamından anlaşılır olacaktır.

Örneğin

$ awk -v var="d" '...' data.in

Yaklaşık bilen herkes awksöyleyebilirim -v var="d"aracı " değişken değeri atanır komut satırında ".awkvard

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.