Bu grep komutu neden çalışmıyor?


24

Grep'i bu şekilde kullanmaya çalıştığımda:

service --status-all | grep network

Yalnızca grep"ağ" dizesiyle sınırlandırmak için yayınladığım halde hala tüm hizmetleri listeliyor


Gerçekten Sonra:

Komutun neden bu şekilde davrandığını açıklayan bu makaleyi farkettim , linux ile ilgili sevdiğim şey bu, her zaman iyi bir neden var, ancak sezgisel olarak gerekli değil

Yanıtlar:


41

Deneyin:

service --status-all |& grep network

Komut satırı uygulamaları standart çıktı (stdout) ve standart hata (stderr) olarak bilinen iki metin akışına yazdırabilir . Varsayılan olarak, terminal sadece her ikisi için de çıktıyı görüntüler.

Stdout 1 sayısını verilir ve stderr varsayılan yönlendirme operatörleri gibi By numara 2. verilir >, |ve <sadece stdout, sayı 1 için geçerlidir.

|&stdout ve stderr'i sağ grepbeklediğiniz şekilde çalıştıran standart giriş (stdin) akışındaki işlemle birlikte borular .

Neden service --status-allburada stderr'e yazdırılıyor bilmiyorum ama genel olarak, ayrı bir stderr akışına sahip olmak çok yararlıdır çünkü stdout susturulduğunda bile hataları görmenize izin verir.


Cevabınız için teşekkürler, bu çok fazla ilgi yarattı. Sanırım bu konuda tek ben değildim.
Meer Borg

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.