'-V' ve '-x' argümanları bash için ne anlama geliyor?


17

Aşağıdaki shebang ile kabuk komut dosyaları bir çift gördük:

#!/bin/bash -x -v 

Ancak, man bashYa bu argümanları açıklamıyor -xve -vonlar aittir ise, ayakta bashhiç.

Peki bunlar -xve -v(ve diğer olası argümanlar) ne anlama geliyor?

Yanıtlar:


26

Gönderen man bash(evet, bu büyük bir adam sayfası, genellikle Google arama hızlıdır):

-x Her basit komutu genişlettikten sonra, komut, büyük / küçük harf komutu, select komutu veya komut için aritmetik için, PS4'ün genişletilmiş değerini, ardından komutu ve genişletilmiş bağımsız değişkenlerini veya ilişkili sözcük listesini görüntüleyin.

Etkili: Bir komut dosyasını çalıştırdığınızda, o komut dosyasında yapılan tüm eylemleri gösterir. Yani tüm ifs, döngüler ve komutlar çalışır. Hata ayıklama için çok faydalıdır.

-v Kabuk giriş satırlarını okundukları gibi yazdırın. Bir komut dosyası çalıştırıldığında, komut dosyasını dosyayı okurken yazdırır. Kabuğu etkileşimli olarak kullandığınızda, enter tuşuna bastıktan sonra her komutu gösterir.

Yukarıdaki alıntılar , içindeki seçeneklerin argüman olarak da (shebang satırında) iletilebileceğini açıklayan setyerleşik komutun açıklamasından alınmıştır :man bashset

Aksi belirtilmedikçe seçenekler varsayılan olarak kapalıdır. Bunun + yerine -bu seçeneklerin kapatılmasına neden olur. Seçenekler, kabuğun çağrılması için bağımsız değişkenler olarak da belirtilebilir. Geçerli seçenekler kümesi içinde bulunabilir $-. Geçersiz bir seçenekle karşılaşılmadığı sürece dönüş durumu her zaman doğrudur.


Tamam, bu bash için basit bir argüman ve ben sadece bu argümanlar olmadan farklı bir sürümü olabilir?
— Alex

Eğer bash hakkında konuşuyorsanız: Geçen on yılın tüm bash sürümlerinin bu argümanları destekleyeceğini düşünüyorum. Man sayfası hakkında konuşuyorsanız: çok büyük ve ne aradığınızı bilmeniz gerekiyor, ancak orada (en azından Ubuntu 13.04'te). Genellikle bir Google araması daha hızlıdır.
— mtak

6
+1 "Google araması daha hızlı" -> /-xsizi birkaç kez oraya götürür man(aslında, bu less). Son aramayı /+ yukarı ok ile tekrarlayabilirsiniz , ancak mevcut herhangi bir aramanın ekrandan çıkmasını sağlamak için sayfayı aşağı kaydırmanız gerekir ( /ileriye doğru arama, ?geriye doğru).
— goldilocks

2
@ TAFKA'goldilocks 'Sanırım dağıtımınıza bağlı. Ubuntu 13.04 bash manuel sayfasında 43. hit doğru olanıdır. nİleri arama ve Ngeri arama için bir sonraki isabeti daha az aramak daha kolaydır .
— mtak

Hata! Aslında test -xKOŞULLU ANLATIMLAR (üçüncü vuruş) altında bakıyordum , değil set -x. -xiçinde man bashdaha spesifik almak yardımcı böylece oldukça kötü bir durumdur: Eğer kullanırsanız /^\s+-x\b, (= çizgi + boşluk + başlangıcı -xEğer 5 isabetlerde Doğruya ulaşmak + kelime sınır) ... o 4 olmuştu ama aslında için olurdu xmaçları X... bu da sormam gereken bir soruya yöneliyor . Her neyse, çoğu man sayfaları ile birlikte ^\s+-x\bdesen ilk önce anahtarları denemelidir.
— goldilocks

2

Bash man sayfası , bu seçeneklerin daha ayrıntılı olarak açıklanacağını ima ediyor, ancak kolayca gözden kaçıyor.

Bu nedenle sorununuz aslında şöyle olmalıdır: Bash man sayfasının OPTIONS bölümü eksik. Cevap, onları çoğaltmak veya SEÇENEKLER bölümünün ilk bölümünü vurgulamak olacaktır:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

Son olarak, bunu tamamlamak için: read ( -v) ve run ( -x) komut dosyalarının kodunu göstermek için herhangi bir POSIX kabuğu için standart seçeneklerdir . Çıktı stderr'de görünecektir.

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.