Evet $ (evet evet) ne işe yarar?


23

yesKomutun ne kullanılabileceğini merak ederek , bu yoruma rastladım ve yürütmeye çalıştım

yes $(yes yes)

Anladığım kadarıyla, bu sadece sonsuz bir dizinin çıktısını almalı yes, fakat bunun yerine hiçbir şey çıkarıp grafik terminalimi birkaç saniye sonra çökertiyor. (Eğer tty1'de uygularsam, bir süre sonra giriş istemini görürüm.)

Burada ne oluyor?


2
Ben bir uzman değilim, ancak ilk aşılamanın sonsuz zamanları yazdırmaya çalışıyor olması olabilir. (veya tartışma sadece çok uzun olabilir.)
Strugee 10:13

5
@strugee Argüman listesi asla doldurulmaz, çünkü yesasla geri dönmez.
Chris Down,

@ strugee Kullanarak "sonsuz sonsuz zamanlar" alabilirsiniz xargs: yes yes | xargs -P 0 yes(veya -P 0tek işlemli sonsuzluk için)
Kyle Strand

Yanıtlar:


25

Koşması için zaten yeterli olmalı

 echo $(yes yes)

$(...)O Tüm çıktıyı bitmiş ve yakalar kadar iç komutu çalıştırır. - Şimdi yesuzun süre çalıştığında ve çok fazla çıktı ürettiğinde, bash sonunda bellek ve çökmeye neden olacak.


6

Kabuğunuzu kapatan hatanın mesajını görmek için bir alt kabuk çalıştırmanız gerekir.

$ sh
$ kill -9 $$
Killed
$

$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$

1
16 milyon gigabayt, ha? Gordon Moore "Şey ... Ben oldukça, demek oluyor bir köşede gözlemliyor henüz ..."
Ferd
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.