Bu kabuk komutunda “-” (çift tire) ne anlama geliyor?


14

Bu kabuk komut var:

kill `cat -- $PIDFILE`

Çift ne - burada? Neden sadece

kill `cat $PIDFILE`

Yanıtlar:


21

--Söyler catkomut satırı seçenekleri olarak ondan sonra gelenleri ayrıştırmak denemek için değil.

Örnek olarak, değişken $PIDFILEolarak tanımlanırsa iki durumda ne olacağını düşünün PIDFILE="--version". Makinemde aşağıdaki sonuçları veriyorlar:

$ cat $PIDFILE
cat (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund and Richard M. Stallman.

$ cat -- $PIDFILE
cat: --version: No such file or directory

3
Bu davranışın (çok yaygın olmasına rağmen) catkabuk tarafından değil , alıcı program (yani ) tarafından tanımlandığını belirtmek gerekir .
dmckee --- ex-moderator kitten

Kendi kabuk betiğinizi yazma --konusunda komut satırı seçeneklerinin sonu anlamına gelen herhangi bir belge veya öğretici var mı ? Getopts ve diğer teknikleri olanları gördüm, ama tartışan bir şey yok --.
CMCDragonkai

3
@CMCDragonkai getopt(1)Man sayfasından başka bir yere bakmanıza gerek yoktur : "'-' parametresinden sonraki her parametre her zaman isteğe bağlı olmayan bir parametre olarak yorumlanır".
Mikael Auno

1

POSIX.1-2017

POSIX bunu şu adreste de belirtir: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

12.2 Yardımcı Program Sözdizimi Yönergeleri

Kılavuz İlke 10:

İlk - Bir seçenek-argüman değil argüman seçenekleri sonunu gösteren bir ayırıcı olarak kabul edilmelidir. Aşağıdaki argümanlar '-' karakteriyle başlasalar bile işlenen olarak ele alınmalıdır.

Ayrıca bakınız: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.