Doğru anladıysam, sen eşdeğer aradığınız tee file1 file2 file3ziyade yazma üç dosyalara aynı verileri daha file1, file2ve file3, sen borusuna üç komutları içine aynı veriyi istiyor cmd1, cmd2ve cmd3yani
… | ??? cmd1 cmd2 cmd3
eşdeğer olmalıdır
… | cmd1 &
… | cmd2 &
… | cmd3 &
bunun dışında …sadece bir kez çalıştırılabilir.
Bunu yapmanın iki yolu var.
Ksh93, bash ve zsh, proses ikamesini destekler . Bu, bir komutun argümanına, yazıldığında, bir komuta girdi olarak veri ileten bir dosya olmasını sağlayan boruların genelleştirilmesidir (ayrıca, komuttan okunan veri çıktısını alan bir veri varyantı da vardır) . Yani,
echo hello | tee >(cmd1)
baskılar hellostandart çıktıya ve ek olarak çalışır cmd1ile hellogirdi olarak kullanılmaktadır.
Örneğin, girişini çoğaltmak somecommandve ikisine de geçirmek istiyorsanız, cmd1vecmd2
somecommand | tee >(cmd1) | cmd2
Eğer kabuğunuz işlem değişimini desteklemiyorsa, bunun yerine adlandırılmış yöneltmeler kullanabilirsiniz. Bunun nasıl çalıştığı için Arcege'in cevabına bakınız . Adlandırılmış borular, işlem değiştirme yerine daha uygundur, çünkü onları oluşturmanız, silmeniz ve işlemleri el ile başlatıp senkronize etmeniz gerekir. Tamamen taşınabilir olma avantajına sahipler, ancak tüm mermiler işlem değiştirmeyi desteklemiyor. Ayrıca işlem ikame edilmediklerinin dışındaki senaryolarda da kullanılabilirler.
Kaputun altında, bazı sistemlerde, işlem ikame işlemi dahili olarak adlandırılmış yöneltmeler kullanır. Yine de çoğu sistemde, dosya tanımlayıcılarını temsil eden adlandırılmış dosyalara dayanır .