Saya baru bekerja di shell dan penggunaan perintah ini tampaknya sewenang-wenang. Apakah ada alasan satu bendera memiliki tanda hubung tunggal dan lainnya mungkin memiliki tanda hubung ganda?
Saya baru bekerja di shell dan penggunaan perintah ini tampaknya sewenang-wenang. Apakah ada alasan satu bendera memiliki tanda hubung tunggal dan lainnya mungkin memiliki tanda hubung ganda?
Jawaban:
Tanda hubung tunggal dapat diikuti oleh beberapa bendera karakter tunggal. Tanda hubung ganda mendahului opsi tunggal, banyak karakter.
Pertimbangkan contoh ini:
tar -czf
Dalam contoh ini, -czf
menentukan tiga bendera karakter tunggal: c
, z
, dan f
.
Sekarang perhatikan contoh lain:
tar --exclude
Dalam hal ini, --exclude
tentukan satu opsi, opsi multicharacter bernama exclude
. Tanda hubung ganda disambiguates argumen baris perintah, memastikan bahwa tar
menafsirkannya sebagai exclude
daripada kombinasi e
, x
, c
, l
, u
, d
, dan e
.
cdrecord
disebutkan tahun lalu di komentar di atas.
Itu semua tergantung pada programnya. Biasanya "-" digunakan untuk opsi 'pendek' (satu huruf, -h), dan "-" digunakan untuk opsi "panjang" (er) (--help).
Opsi pendek biasanya dapat digabungkan (jadi "-h -a" sama dengan "-ha")
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.
Ini benar-benar sebuah konvensi. Namun, ini dapat membantu parser untuk mengetahui lebih efisien tentang opsi yang diteruskan ke program. Selain itu, ada utilitas rapi yang dapat membantu mem- parsing perintah-perintah ini, seperti getopt(3)
atau non-standar getopt_long(3)
untuk membantu mem-parsing argumen program.
Itu bagus, karena kita dapat menggabungkan beberapa opsi pendek, seperti jawaban lain katakan, seperti tar -xzf myfile.tar.gz
.
Jika ada argumen "lisa" untuk ls
, mungkin akan ada arti yang berbeda untuk diketik ls -lisa
daripada ls --lisa
. Mantan adalah l
, i
, s
, dan a
parameter, bukan kata.
Bahkan, Anda bisa menulis ls -l -i -s -a
, artinya persis sama dengan ls -lisa
, tetapi itu akan tergantung pada programnya.
Ada juga program yang tidak mematuhi konvensi ini. Terutama untuk pandangan saya, dd
dan gcc
.
opsi pendek dengan dasbor tunggal vs opsi panjang dengan dasbor ganda
opsi pendek dapat digabungkan menjadi satu argumen;
for example: ls -lrt #instead of ls -l -r -t
Jika kami mengizinkan opsi panjang dengan satu tanda hubung, itu menyebabkan ambiguitas. Untuk mengatasi ini, kami menggunakan dasbor ganda untuk opsi panjang.