Bir ses klibinin meta bilgilerini almak için ffmpeg kullanıyorum. Ama ben onu ezemiyorum.
$ ffmpeg -i 01-Daemon.mp3 |grep -i Duration
FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib
--mandir=/usr/share/man --arch=i386 --extra-cflags=-O2
...
Kontrol ettim, bu ffmpeg çıkışı stderr'ye yönlendirildi.
$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
Bu nedenle grep'in eşleşen satırları yakalamak için hata akışını okuyamadığını düşünüyorum. Grep'in hata akışını okumasını nasıl sağlayabiliriz?
NixCraft linkini kullanarak standart hata akışını standart çıkış akışına yönlendirdim, sonra grep çalıştı.
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
Fakat ya stderr'i stdout'a yönlendirmek istemezsek ne olur?
grep
sadece stdin'de çalışabilir. Grep'in stdinini diğer komutun stdout'una bağlayan kabuk tarafından oluşturulan boru. Ve kabuk sadece bir stdout'u bir stdin'e bağlayabilir.
grep
yalnızca stdout'ta çalışabileceğine inanıyorum (Bunu desteklemek için kanonik kaynağı bulamıyorum, ancak bu, herhangi bir akışın ilk önce stdout'a dönüştürülmesi gerektiği anlamına geliyor.