Jawaban:
Lebih tepatnya, tanda hubung ganda ( --
) digunakan dalam perintah bash built-in dan banyak perintah lain untuk menandai akhir opsi perintah, setelah itu hanya parameter posisi yang diterima.
Contoh penggunaan: katakanlah Anda ingin grep file untuk string -v
- biasanya -v
akan dianggap opsi untuk membalikkan makna yang cocok (hanya tampilkan baris yang tidak cocok), tetapi dengan --
Anda dapat grep untuk string -v
seperti ini:
grep -- -v file
--
berfungsi untuk memisahkan opsi dari ekspresi reguler grep
, tetapi cara kanonik adalah dengan menggunakan -e
/ --regexp
.
--
, meskipun Anda benar dalam mencatat bahwa contoh saya di atas juga dapat ditulis sebagai grep -e -v file
(walaupun itu sangat membingungkan).
bash
perintah bawaan menerima --
sebagai akhir dari penanda opsi. [
dan echo
jangan misalnya ( salah satu alasan echo
tidak dapat digunakan dengan andal ).
Dalam man bash
kita dapat membaca di Shell Built Perintah bagian:
Kecuali disebutkan sebaliknya, setiap perintah builtin didokumentasikan dalam bagian ini sebagai menerima opsi yang didahului oleh
-
accepts--
untuk menandakan akhir dari opsi .The
:
,true
,false
, dantest
builtin tidak menerima pilihan dan tidak memperlakukan--
khusus. Theexit
,logout
,break
,continue
,let
, danshift
builtin menerima dan argumen proses dimulai dengan-
tanpa memerlukan--
. Builtin lain yang menerima argumen tetapi tidak ditentukan sebagai opsi menerima menafsirkan argumen dimulai dengan-
sebagai opsi yang tidak valid dan perlu--
untuk mencegah interpretasi ini.Catatan yang
echo
tidak menafsirkan--
berarti akhir dari opsi.
man bash
(perhatikan sendiri untuk lain kali:).
POSIX.1-2017
12.2 Pedoman Sintaks Utilitas
Pedoman 10:
--
Argumen pertama yang bukan opsi-argumen harus diterima sebagai pembatas yang menunjukkan akhir opsi. Argumen berikut harus diperlakukan sebagai operan, bahkan jika mereka mulai dengan karakter '-
'.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
built-in, di mana itu benar-benar diperlukan.