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:
tee
Komut 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 ls
girdi olarak iki farklı grep
her çıkışında tasarruf programları grep
tü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-files
ilk çıkışından itibaren içeriğe sahip olacaktır grep
ve normal-files
saniyenin sonuçları olacaktır grep
. Tüm dosyalar çağrı cihazında gösterilecektir DÜZENLEME : Eğer gördüklerinizi less
.less
olan aynı kesin çıkış ait ls -A
değil sonucudur grep
s. Eğer çıktı değiştirmek istiyorsanız ls -A
iç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
, grep
s'nin çıktısı ls -A
yerine 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."