Saya menggunakan ffmpeg untuk mendapatkan info meta dari klip audio. Tapi saya tidak bisa menerimanya.
$ 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
...
Saya memeriksa, output ffmpeg ini diarahkan ke stderr.
$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
Jadi saya pikir grep tidak dapat membaca aliran kesalahan untuk menangkap garis yang cocok. Bagaimana kita bisa mengaktifkan grep untuk membaca aliran kesalahan?
Menggunakan tautan nixCraft , saya mengarahkan aliran kesalahan standar ke aliran keluaran standar, lalu grep bekerja.
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
Tetapi bagaimana jika kita tidak ingin mengarahkan stderr ke stdout?
grep
hanya bisa beroperasi di stdin. Ini adalah pipa yang dibuat oleh shell yang menghubungkan stdin grep ke stdout perintah lain. Dan shell hanya dapat menghubungkan stdout ke stdin.
grep
hanya dapat beroperasi pada stdout (Meskipun saya tidak dapat menemukan sumber kanonik untuk mendukung itu), yang berarti bahwa setiap aliran perlu dikonversi ke stdout terlebih dahulu.