Doğru anladıysam, sen eşdeğer aradığınız tee file1 file2 file3
ziyade yazma üç dosyalara aynı verileri daha file1
, file2
ve file3
, sen borusuna üç komutları içine aynı veriyi istiyor cmd1
, cmd2
ve cmd3
yani
… | ??? 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 hello
standart çıktıya ve ek olarak çalışır cmd1
ile hello
girdi olarak kullanılmaktadır.
Örneğin, girişini çoğaltmak somecommand
ve ikisine de geçirmek istiyorsanız, cmd1
vecmd2
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 .