Yang paling umum adalah GNU getopt gaya, dengan satu garis putus-putus untuk opsi pendek dan dua garis putus-putus untuk opsi panjang.
-
Awalnya, program Unix menggunakan opsi satu huruf yang didahului dengan satu tanda hubung dan secara opsional dipaketkan:
ls -laF ls -l -a -FKedua perintah di atas sama.
Saat sebuah opsi mengambil nilai, opsi tersebut mengesampingkan bundling:Di
gpg -aofoo.gpg,-adan-oadalah opsi danfoo.gpgadalah nilai yang diberikan ke-o. -
Kebanyakan dari mereka melakukannya.
tar cvzfadalah pemandangan umum. Versi saat ini menerimatar -cvzfjuga, dan bergantung pada apakah Anda menambahkan tanda hubung, argumen akan ditafsirkan dengan cara yang sangat berbeda. Misalnya, keduanya memiliki arti yang sama (perhatikan bagaimana opsi dashless tidak tepat sebelum nilainya):tar -xf file.tgz -vzO /etc/passwd /var/backupstar xfvzO file.tgz /etc/passwd /var/backupsBSD
psselalu menggunakan-; SysVpstidak pernah. Versi Linux menerima kedua versi dan mengubah perilakunya tergantung pada apakah suatu opsi diawali dengan tanda hubung. (Tidak seperti contoh tar di atas, ps mengubah opsi makna juga.) -
Program X11 menggunakan opsi panjang yang diawali dengan tanda hubung tunggal atau terkadang tanda plus:
xterm -class FooTerm +vb -u8Ini menetapkan opsi
classdanu8, dan tidak disetelvbopsi.Gaya X11 tidak kompatibel dengan pengelompokan opsi.
-
Belakangan, opsi panjang ditambahkan ke GNU
getopt()dengan cara yang kompatibel dengan opsi satu huruf.gpg -se --no-armor --output=signed.gpgIni menetapkan
-s,-e, dan--no-armor(yang berlawanan dengan--armor).Biasanya,
--output=signed.gpgdan--output signed.gpgsetara. (Tapi tidak selalu – misalnya curl tidak menerima yang pertama, hanya yang terakhir.)(Jika saya ingat dengan benar, opsi panjang menggunakan
+sebagai awalan sebelum diubah menjadi--.) -
Spesifikasi POSIX memiliki bagian Sintaks Argumen Utilitas, yang menjelaskan opsi satu karakter.
Sebagian besar program Windows menggunakan parser mereka sendiri, membuat pengguna marah.
- Beberapa membutuhkan
/a /b /c, yang lain mengizinkan/a/b/cbergaya VMS , namun yang lain lebih suka gaya Unix/abc. - Kebanyakan menggunakan
/sebagai awalan, beberapa juga menerima-, yang lain hanya menerima-. - Nilai dapat diberikan sebagai
/foo bar,/foo=bar,/foo:bar. - Biasanya spasi bisa berupa
/quoted "like this", tetapi beberapa program menggunakan"sebagai karakter literal. (Ini adalah kerugian dari membiarkan program melakukan pemisahan kata sendiri; di Unix hal ini ditangani oleh shell.) - Program lintas platform dapat menggunakan implementasi
getopt.
Umumnya yang pertama ditemukan di program lama yang terlalu mengakar kuat untuk diubah. Opsi panjang semacam itu tidak kompatibel dengan getopt() standar fungsi.
Gaya kedua diperkenalkan oleh GNU getopt_long() , dan sesuai dengan standar yang ada yang mengharapkan gaya pertama dibundel opsi singkat (yaitu, -orange diharapkan berarti -o -r -a -n -g -e ). Gaya opsi panjang ini sangat disukai.