Đây có phải là chuyển hướng đến / dev / null?


7

Tôi tìm thấy đoạn script này trên wiki vòm có tiền tố ffmpegnhư thế này

< /dev/null ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}"

Tôi hiểu lệnh ffmpeg, nó là < /dev/nullmột phần. Có phải là để chuyển hướng đầu ra dài dòng đến /dev/null/?

Câu trả lời:


12

Không ... nó đang đọc từ /dev/null. command < input< input commandlà tương đương.

(Nhân tiện cũng vậy > output commandcommand > output.)


Thôi bây giờ tôi càng bối rối. Tại sao nó sẽ đọc từ /dev/null, khi nó /dev/nullchỉ mang lại EOF. Tại sao không chỉ sử dụng EOF?
cheezsteak

Chuyển hướng stdintừ /dev/nulllà cách dễ nhất để có được EOF ngay lập tức. Làm thế nào khác bạn sẽ làm điều đó?
Blacklight Shining

3
@PhilipWales, cái gì EOF? Chuyển hướng đầu vào từ /dev/nullđảm bảo mỗi lần đọc không trả về gì. Thay thế, ngắn hơn nhưng kém hiệu quả hơn là:|ffmpeg ...
Stéphane Chazelas

3
@PhilipWales Chuyển hướng đầu vào sang / dev / null có vẻ quá mức cần thiết, nhưng đây là một kỹ thuật phổ biến để ngăn chương trình vô tình đọc thứ gì đó từ bộ đệm bàn phím. Ví dụ: bạn có một chương trình sẽ hủy bỏ một thao tác dài nếu nó nhận được Escape từ bàn phím. Trong hầu hết các thiết bị đầu cuối, các phím chức năng tạo ra Escape-seqeuences ... Đọc từ / dev / null sau đó sẽ ngăn chặn việc hủy bỏ ngoài ý muốn bởi một người dùng vụng về nhấn nhầm phím.
Tonny

@Tonny: Làm thế nào là quá mức cần thiết?
Keith Thompson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.