Bunu yazarken, kabul edilen yanıtın sözdizimi, hepsi olmasa da, Bourne'den türetilen mermiler de dahil olmak üzere çoğu için yanlıştı bash
. En üste bir düzenleme önerdim ve bunu düzeltmek için cevabı kabul ettim, ancak diğer tüm bilgileri de eklemeye meyilli oldum ve bu daha çok bir düzenleme yerine bir yeniden yazma olurdu.
Bileşik komutları kullanabilirsiniz:
{ grep ...; bzgrep ...; } >file
..veya alt kabuklar (süslü parantez yerine parantezlere dikkat edin):
(grep ...; bzgrep ...) >file
.. komutları gruplandırmak için. Alt kabuk yolu daha güzel bir sözdizimine sahiptir (beyaz boşluk eksikliğini daha affedicidir ve son noktalı virgülü atlamanızı sağlar), ancak ya yeni bir işlem ister ya da komutların temizlenmiş bir ortamda çalışmasını "taklit eder". Her ikisinin de ne yapmak istediğinize bağlı olarak avantajları var, bu da burada önemli değil, ancak kabukta daha fazla yeterlilik istiyorsanız, aramaya değer.
Not: Boru hattını bu hilelerle de kullanabilirsiniz, böylece böyle bir şey yapabilirsiniz:
{ grep ...; bzgrep ...; } | less
Eğer kombine çıktıda maçların sipariş umurumda değil eğer PS, tek kullanabilirsiniz &
şöyle iki komut arasındaki: { grep ... & bzgrep ...; }
. Sonra iki komut aynı anda çalışır: grep
Başlatılır ve kabuk onu arka plana koyar, sonra kabuk çalışacaktır bzgrep
. (Ancak, dosya yönlendirmesi ve dosya akışı arabelleğe almayı içeren küçük bir uyarı var, potansiyel olarak çıktı dosyasındaki satırların çok küçük bir bölümünün bölünmesine / yönetilmesine neden oluyor: bunun grep
, bzgrep
ve libc
stdio.h
fonksiyonları uygulanmaktadır. en uygulamalarda, sana yapabileceğini, böylece sorunu önlemek olacaktır bir dosyaya yeniden yönlendirmeden önce komutunu boru inanmak { foo & bar; } | cat - >file
geçici bir çözüm olarak.)