Tidak ada standar luas. Ada beberapa konsistensi misalnya dalam program GNU, tetapi Anda perlu memeriksa dokumentasi masing-masing program.
Mengutip Wikipedia , beri penekanan pada saya:
Dalam sistem mirip Unix, tanda hubung ASCII biasanya digunakan untuk menentukan opsi. Karakter biasanya diikuti oleh satu atau lebih huruf . Argumen yang merupakan tanda hubung tunggal dengan sendirinya tanpa huruf apa pun biasanya menentukan bahwa suatu program harus menangani data yang berasal dari input standar atau mengirim data ke output standar. Dua karakter tanda hubung – minus (-) digunakan pada beberapa program untuk menentukan "opsi panjang" di mana nama opsi yang lebih deskriptif digunakan . Ini adalah fitur umum dari perangkat lunak GNU.
Biasanya, tanda hubung menunjukkan argumen yang telah ditentukan. Saya pikir ini digunakan untuk membedakan mereka dari misalnya nama file atau label lain yang mungkin Anda gunakan sebagai argumen. Tapi itu tidak selalu terjadi (lihat di bawah).
Anda akan sering menemukan argumen yang sama tersedia sebagai opsi pendek dan panjang, seperti misalnya di ls .
Beberapa program menggunakan tanda hubung tunggal untuk opsi satu karakter, dan dua tanda hubung untuk opsi multi-karakter, tetapi tidak semua (GNU find
datang ke pikiran). Beberapa program memiliki tanda hubung opsional atau lewati semuanya ( tar
atau BSD ps
muncul di benak Anda).
Terkadang opsi panjang ( --foo
) memerlukan argumen, sedangkan opsi pendek ( -f
) tidak (atau setidaknya menyiratkan argumen default tertentu).
Opsi pendek (mis. cut -d ' '
) Dapat memiliki argumen, sedangkan opsi panjang (mis. ls --all
) Tidak selalu memilikinya.
Untuk mengatur perilaku tertentu dari suatu program, Anda kadang-kadang perlu menggunakan opsi pendek, untuk yang lain Anda perlu menggunakan opsi panjang, dan untuk beberapa Anda punya pilihan.
Pada catatan terkait, beberapa program tidak dapat menangani spasi kosong antara opsi dan argumennya , sementara yang lain tidak.
Seperti yang saya tulis di awal, tidak ada perilaku atau standar umum. Seringkali Anda dapat melacak perilaku serupa ke pustaka yang sama yang digunakan untuk parsing argumen, tetapi Anda mungkin tidak ingin membaca sumber untuk mengetahui hal ini.
Anda benar-benar tidak dapat menyimpulkan sintaks argumen satu program dari yang lain.
Jika Anda juga mempertimbangkan Windows, itu menjadi lebih buruk: Sementara baris perintah Windows secara tradisional menggunakan panggilan /f
(setidaknya sebagian besar waktu, karakter tunggal) untuk opsi, dengan :
sebagai pemisah antara opsi dan nilainya (lihat misalnya di sini ); utilitas lintas platform tersebar luas (seperti yang Anda sebutkan) dan membawa sintaks tanda hubung yang lebih umum untuk argumen, dengan semua inkonsistensi yang disebutkan di atas.
-i
vs.--input
atau-n
--dry-run
.