シェルで作業するのは初めてで、これらのコマンドの使用は恣意的です。 1つのフラグに1つのダッシュがあり、別のフラグに2つのダッシュがある理由はありますか?
1つのハイフンの後に、複数の1文字のフラグを続けることができます。二重ハイフンは、単一の複数文字オプションの前に付けます。
この例を考えてみましょう:
tar -czf
この例では、-czf
は、c
、z
、およびf
の3つの単一文字フラグを指定します。
ここで別の例を考えてみましょう:
tar --exclude
この場合、 --exclude
は、exclude
という名前の単一の複数文字オプションを指定します。二重ハイフンはコマンドライン引数を明確にし、tar
、exclude
、e
、x
、c
、l
、u
の組み合わせではなく、d
がe
として解釈するようにします。
それはすべてプログラムに依存します。通常、「-」は「短い」オプション(1文字、-h)に使用され、「-」は「長い」(er)オプション(--help)に使用されます。
通常、短いオプションを組み合わせることができます(「-h -a」は「-ha」と同じです)
Unixライクなシステムでは、ASCIIハイフンマイナスは、オプションを指定するために一般的に使用されます。通常、文字の後に1つ以上の文字が続きます。単一のハイフンマイナスである引数自体は、通常、すべての文字は、プログラムが標準入力からのデータを処理するか、データを標準出力に送信することを指定します。一部のプログラムでは、2つのハイフンマイナス文字(-)を使用して、より詳細なオプション名が使用される「長いオプション」を指定します。これはGNUソフトウェアの共通機能です。
それは本当に慣習です。ただし、プログラムに渡されるオプションについて、パーサーがより効率的に知るのに役立ちます。さらに、これらのコマンドの解析に役立つきちんとしたユーティリティがあります getopt(3)
または非標準 getopt_long(3)
などプログラムの引数を解析します。
tar -xzf myfile.tar.gz
のような他の回答にあるように、複数の短いオプションを組み合わせることができるのはいいことです。
ls
に「Lisa」引数があった場合、ls -Lisa
とls --Lisa
を入力する意味はおそらく異なるでしょう。前者はWordではなく、l
、i
、s
、およびa
パラメータです。
実際、ls -l -i -s -a
はls -Lisa
とまったく同じ意味で記述できますが、これはプログラムによって異なります。
この規則に従わないプログラムもあります。特に私の目で見れば、dd
とgcc
です。
シングルダッシュの短いオプションとダブルダッシュの長いオプション
短いオプションは単一の引数に組み合わせることができます。
for example: ls -lrt #instead of ls -l -r -t
単一のダッシュで長いオプションを許可すると、あいまいさが生じます。これを解決するには、長いオプションに2つのダッシュを使用します。