Komut satırı parametrelerindeki "-" nin (tire) büyüsü nedir?


102

Örnekler:

  • Bir ISO görüntüsü oluşturun ve bunu doğrudan bir CD'ye yazın.

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • Önceki dizine geçin.

    cd -

  • 12345 numaralı bağlantı noktasını ve ona gönderilen tar verilerini dinleyin.

    nc -l -p 12345 | tar xvzf -

Çizginin amacı nedir ve onu nasıl kullanırım?

Yanıtlar:


113

-Sonunda çıplak demek istiyorsantarKomutun , bu bir dosya kullanmak isteyen birçok komutta yaygındır.

Gerçek bir giriş veya çıkış yerine standart giriş veya çıkış belirtmenize olanak sağlar. dosya adı .

Birinci ve üçüncü örneğiniz için durum budur. Örneğin, cdrecordkomut standart girdiyi (tarafından üretilen ISO görüntü akışı mkisofs) alıyor ve bunu doğrudan yazıyor /dev/dvdrw.

Komutla, cddizini her değiştirdiğinizde, geldiğiniz dizini kaydeder. cdÖzel -"dizin adı" ile yaparsanız , gerçek dizin yerine o hatırlanan dizini kullanır. Bunu kullanarak iki dizin arasında oldukça hızlı bir şekilde geçiş yapabilirsiniz.

Diğer komutlar tedavi edilebilir -bir şekilde farklı bir özel değer.


9
not -git şubeleri için de kullanabilirsiniz , yani önceki şubenize geri dönebilirsinizgit checkout -
snappieT

3
Tar belgelerinin neresinde desteklendiğini açıklıyor? Hangi komutların onu desteklediğini nasıl bilebilirim?

1
Bir komutun özel bir anlamı -varsa açıklamasını man sayfasında bulabilirsiniz.
codeforester

su - # kabuğu bir giriş kabuğu yapın
atongsa

Bunun gibi bir komutu çok ilginç buluyorum: tar -cvf - / home | aescrypt -e -p elmalar -> backup_files.tar.aes aslında tar -cvf - / home | aescrypt -e -p elmalar -o backup_files.tar.aes - borulama karakteri | son tirenin varlığını gereksiz kılmalıdır. Ancak son tire olmadan komut başarısız olur. Mantıksız geliyor. Birisi bana komut satırlarındaki çıplak çizgi anlamının açıklandığı bir referans verebilir mi? Ben bulamıyorum.
elmclose

22

Sihir değil. Bazı komutlar -, kullanıcının stdin'den okumak veya stdout'a yazmak istemesi olarak yorumlanır ; kabuğunda özel bir şey yok.


9
Hariç cd -; bash(1)yazmışsınız cd -gibi işler cd $OLDPWD.
sarnold

6
@sarnold Ama konu aynı, cd- bir kabuk yerleşik komut - bir çizginin kendisini yorumluyor. "Sihir" yok :-)

2
@pst, tabii, hiçbir sihirli (hepsi sadece kod :) ama orada olduğu özel bir şey kabuğuna bu konuda.
sarnold


10

-her komutun tam olarak ne anlama gelmesini istediği anlamına gelir. Birkaç ortak kural vardır ve bunların çoğunun örneklerini diğer yanıtlarda gördünüz, ancak hiçbiri% 100 evrensel değildir.

Hakkında hiçbir sihirli yoktur -karakteri kadarıyla kabuk söz konusu olduğunda (haricinde kabuk kendisi ve bazı onun gibi komutları yerleşik cdve echobu geleneksel yollarla kullanın). Bazı karakterler gibi \, 've ", olan göründükleri yerde özel anlamları olan, "sihirli". Bunlar "kabuk meta karakterleri" dir. -öyle değil.

Verilen komutun kullandığı nasıl çalıştığını görmek için -, o komut için belgeleri okuyun .


7

Sihir kongrede. Bin yıldır insanlar seçenekleri argümanlardan ayırmak için '-' kullandılar ve bir dosya adında '-' yerine stdin veya stdout anlamında kullanıldılar. Konvansiyonun gücünü küçümsemeyin!


İnsanların konuşma tarzlarını gerçek ifadelerden ayırt etme yeteneklerini abartmayın. Bu bin yıldır devam etmiyor.
üçlü

1
@tripleee - Doğru, ancak milyarlarca saniyedir devam ediyor. ;-)
David R Tribble

5

Programın standart giriş akışını kullanmak anlamına gelir.

Bu durumda, cdfarklı bir anlama gelir: önceki çalışma dizinine geçin.

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.