Bir komutun çıktısını aynı anda diğer iki komutun girişine nasıl aktarabilirim?
Bir komutun çıktısını aynı anda diğer iki komutun girişine nasıl aktarabilirim?
Yanıtlar:
teeKomut istediğini yapacak gibi geliyor .
Anahtar kullanmaktır
>( )
için işlem yerine . İle tee, aşağıdaki deseni kullanın:
tee >(proc1) >(proc2) >(proc3) | proc4
Eğer çıktısını kullanmak istedi Yani eğer lsgirdi olarak iki farklı grepher çıkışında tasarruf programları greptüm aracılığıyla farklı sonuç dosyalarına ve boru less, deneyin:
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less
ls -Aİsteğin sonuçları her ikisine de "aktarılacak" grep. Dosya hidden-filesilk çıkışından itibaren içeriğe sahip olacaktır grepve normal-filessaniyenin sonuçları olacaktır grep. Tüm dosyalar çağrı cihazında gösterilecektir DÜZENLEME : Eğer gördüklerinizi less.lessolan aynı kesin çıkış ait ls -Adeğil sonucudur greps. Eğer çıktı değiştirmek istiyorsanız ls -Aiçin less, (normal dosyalar gizli olanlar önce listelenen böylece örneğin takas sipariş) o zaman bu deneyin:
ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less
Olmadan >/dev/null, greps'nin çıktısı ls -Ayerine yerine çıktıya eklenir .
"Tee" yi kullan.
Örnek:
grep someSearchString someFile | tee /dev/tty | wc -l > grepresult
Bu hem terminale ve grep komutunun çıktısını gönderir wc (kimin çıktı sırayla dosya grepresult yönlendirilir).
"Tee" Wikipedia makalesinde tee (komut) ile açıklanmıştır . Merkezi şudur: "tee komutu standart girişi okur, ardından içeriğini standart çıktıya yazar ve aynı anda belirtilen dosyalara veya değişkenlere kopyalar."