Mengapa opsi dengan string panjang memiliki tanda hubung ganda?

1

Pertanyaan ini mungkin telah ditanyakan sebelum ...

Mengapa flag seperti --recursive memiliki dua strip bukan hanya -recursive? Saya tahu bahwa versi singkatnya hanya -r. Adakah jumlah karakter maksimum yang dimiliki oleh bendera dengan satu tanda hubung sebelum membutuhkan dua tanda hubung?

HeavenlyHarmony
sumber

Jawaban:

2

Masalahnya adalah Anda bisa mengatakan hal-hal seperti ls -laR; itu setara dengan ls -l -a -R. Begitu -recursive akan diartikan sebagai -r -e -c -u -r -s -i -v -e.

Scott
sumber
ini juga digunakan untuk memungkinkan argumen panjang dan membiarkan Anda meneruskan argumen ke opsi tanpa kebingungan.
Frank Thomas
1

Tidak ada aturan pasti untuk menggunakan dasbor tunggal atau ganda sebagai opsi untuk suatu program. Jika seseorang memutuskan untuk menangani opsi sendiri, ia dapat mengimplementasikan apa pun yang diinginkannya. Tetapi jika programmer tidak mencari PITA dan ingin program menggunakan cara umum yang dapat dikenali dengan baik maka orang akan menggunakan fungsi standar getopt/getopt_long yang menangani opsi panjang (string panjang seperti yang Anda minta) sebagai tanda hubung ganda, opsi pendek (karakter tunggal) diawali dengan tanda hubung tunggal. Fungsinya getopt bagian dari <unistd.h> dalam bahasa C. Fungsi yang sama dapat digunakan pada sistem berbasis Unix di shell standar man getopt 1 yang menggunakan parsing opsi tunggal dan ganda putus-putus (panjang).

Adakah jumlah karakter maksimum yang dimiliki oleh bendera dengan satu tanda hubung sebelum membutuhkan dua tanda hubung?

Jika seseorang menggunakan fungsi yang dijelaskan di atas maka opsi pendek hanya dapat memiliki satu karakter tunggal.

Alex
sumber