Kabuk komutlarındaki tek çizgi ve çift çizgi bayraklarının arasındaki fark nedir?


70

Kabukta çalışmaya yeni başladım ve bu komutların kullanımı keyfi görünüyor. Bir bayrak tek bir çizgi ve diğer bir çift çizgi olabilir bir nedeni var mı?


: POSIX standardı tarafından yönetilmelidir gerekiyordu iam.ubc.ca/guides/javatut99/essential/attributes/_posix.html
CJC

Bu bağlantı şimdi 404 cjc :( Muhtemelen daha güvenilir bir bağlantı en.wikipedia.org/wiki/POSIX
Bernhard Hofmann

Yanıtlar:


110

Tek bir kısa çizgi, birden çok tek karakterlik bayraklarla takip edilebilir. Çift tire, tek, çok karakterli bir seçeneği ön ekler.

Bu örneği düşünün:

tar -czf

Bu örnekte, -czfüç tek karakterlik bayrakları belirtir: c, z, ve f.

Şimdi başka bir örnek ele alalım:

tar --exclude

Bu durumda, --excludeadında tek, çok karakterli bir seçenek belirtir exclude. Çift düz çizgi sağlanması, komut satırı bağımsız belirsizliği ortadan kaldırır tarbunu olarak yorumlar ve excludeyerine bir arada e, x, c, l, u, d, ve e.


1
@kylex, hayır, sadece "c" adında uzun bir seçenek olmadığından ve - uzun bir seçenek anlamına gelir, tek bir karakter seçeneği olmaz.
psusi

13
Bazen uzun komutlar bile tek çizgili olabilir. Örneğin 'cdrecord' tüm tek çizgili komutları kullanır (-eject -dao ...). Her şey programa bağlı, ancak çoğu (!) Tek - ve çok karakterli (uzun) komutlar için kullanıyor
mulaz

8
@mulaz, evet, cdrecord epeyce saçma şeyler yapar.
psusi

10
ayrıca akılda tutmak - kendi başına kullanılan genellikle seçeneklerin sona erdiğini gösterir. daha fazla bilgi için buraya bakın: unix.stackexchange.com/questions/11376/…
Sirex

3
@killjoy, çünkü cehalet veya seçim yoluyla, bu programların yazarları elbette kongre takip etmedi çünkü. Tıpkı cdrecordyıllar önce yukarıdaki yorumlarda belirtildiği gibi .
psusi

17

Her şey programa bağlı. Genellikle “-” “kısa” seçenekler için (bir harf, -h), “-” “uzun” (er) seçenekler (--help) için kullanılır.

Kısa seçenekler genellikle birleştirilebilir (bu nedenle "-h -a", "-ha" ile aynıdır)

Unix benzeri sistemlerde, ASCII kısa çizgisi-eksi genellikle seçenekleri belirlemek için kullanılır. Karakteri genellikle bir veya daha fazla harf izler. Harfsiz tek başına kısa çizgi eksi olan bir argüman genellikle bir programın standart girdiden gelen verileri işlemesi veya standart çıktıya veri göndermesi gerektiğini belirtir. Daha açıklayıcı seçenek adlarının kullanıldığı "uzun seçenekler" i belirtmek için bazı programlarda iki kısa çizgi eksi karakteri (-) kullanılır. Bu GNU yazılımının ortak bir özelliğidir.

kaynak


2
Öyleyse neden java-versiyon ve ant-versiyon var?
killjoy

7

Bu gerçekten bir kongre. Bununla birlikte, programa geçirilen seçenekler hakkında ayrıştırıcıların daha verimli bilgi sahibi olmalarına yardımcı olabilir. Ayrıca, bir programın argümanlarını ayrıştırmaya yardımcı olmak için getopt(3)standart olmayan veya bu gibi komutları ayrıştırmaya yardımcı olabilecek düzgün yardımcı programlar vardır getopt_long(3).

Güzel, çünkü diğer cevapların da söylediği gibi birleştirilmiş kısa seçeneklerimiz olabilir tar -xzf myfile.tar.gz.

İçin bir "lisa" argümanı varsa ls, muhtemelen yazabilmek için farklı bir anlam var olurdu ls -lisadaha ls --lisa. Birincisiyseniz l, i, s, ve aparametreler, kelimeler.

Aslında, ls -l -i -s -atam olarak aynı ls -lisa, ancak programa bağlı , yani yazabilirsiniz .

Bu sözleşmeye uymayan programlar da var. En çok da benim görüşüme göre, ddve gcc.


3

tek çizgi ile kısa seçenekler - çift çizgi ile uzun seçenekler

kısa seçenekler tek bir argümana birleştirilebilir;

for example: ls -lrt #instead of ls -l -r -t

Tek çizgi ile uzun seçeneklere izin verirsek, belirsizliğe neden olur. Bunu çözmek için uzun seçenekler için çift çizgi kullanıyoruz.

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.