2010-11-06 16 views
13

Yeni dosyalar oluşturmamayı tercih ediyorum.Farkı bulmak için iki unix komutunun çıktısını nasıl karşılaştırabilirim?

cmd1 > a 
cmd2 > b 
cat a b b | sort | uniq -u 

ancak dosyalar a ve b kullanmadan: Ben benzer bir şey başarmak istiyorum.

+0

İlgili: [Geçici dosyalar olmaksızın iki programdan alınan çıktılar] (http://stackoverflow.com/questions/3800202/diff-output-from-two-programs-without-temporary-files), [Nasıl fark edilirim? iki komutun çıkışı?] (http://askubuntu.com/questions/229447/how-do-i-diff-the-output-of-two-commands) – kenorb

cevap

28

Unix hizmeti genellikle odaklı dosya, böylece hiçbir şey oldukça istediğini yapar.

Ancak, zsh aşağıdaki yazım geçici dosyaları autocreate edebilirsiniz: Aynı zamanda geçici adlandırılmış yöneltme oluşturabilir

diff =(cmd1) =(cmd2)

(veya anonim borularını başvurmak için özel dosyaları /dev/fdn kullanın)

diff <(cmd1) <(cmd2) ile Bununla birlikte, birçok diff numaralı telefonun lseek() numaralı telefon numarasını arayarak, bu nedenle adlandırılmış yöneltmelerle çalışmaz.

(diff yukarıdaki boru hattı daha çok benzer çıktı karşılaştırmak için genel bir daha kullanışlı komuta budur.)

fazla detay için "zshexpn" adam sayfasının "süreci ikamesi" bölümüne bakın.

+8

'<(cmd)' sözdizimi oldukça bash gibi daha yaygın olarak kullanılan kabuklarla da desteklenen standart olanıdır. Bunu geçmişte herhangi bir problem görmeden diff ile kullandım. – Porculus

+0

Ve tabi ki, bu sadece 'diff' kelimesiyle değil. Onu vimdiff ve diğer araçlar için de kullanıyorum. – DerMike

İlgili konular