Ruby:
Ghi vào lỗi chuẩn
Làm thế nào:
Trong Ruby, bạn có thể ghi vào lỗi chuẩn sử dụng $stderr.puts
hoặc phiên bản viết tắt STDERR.puts
. Dưới đây là một ví dụ nhanh:
puts "Điều này sẽ đến đầu ra chuẩn."
$stderr.puts "Điều này sẽ đến lỗi chuẩn."
# Phiên bản viết tắt:
STDERR.puts "Điều này cũng sẽ đến lỗi chuẩn."
Mở terminal của bạn, chạy script và chú ý cách mọi thứ vẫn xuất hiện cùng nhau theo mặc định. Cần phải chuyển hướng để tách các luồng. Dưới đây là cách bạn có thể làm điều đó:
ruby your_script.rb >output.txt 2>error.txt
Lệnh này chuyển hướng đầu ra chuẩn tới output.txt
và lỗi chuẩn tới error.txt
.
Đào sâu
Khái niệm stderr
trở về những ngày đầu tiên của Unix. Nó được thiết kế cho thông báo lỗi, đảm bảo chúng hiện hữu ngay cả khi stdout
được chuyển hướng. Mặc dù $stderr.puts
và STDERR.puts
là phổ biến trong Ruby, có những cách khác để viết vào stderr
, như sử dụng warn
để viết cảnh báo hoặc các API cấp thấp hơn như $stderr.write
. Về mặt triển khai, stderr
theo mặc định là không đệm, đảm bảo đầu ra ngay lập tức, trong khi stdout
thường được đệm.
Xem thêm
- Tài liệu Ruby về I/O: https://ruby-doc.org/core-3.1.2/IO.html
- Các Đặc điểm Cơ bản của Nhóm Mở (luồng chuẩn UNIX): https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
- Hiểu về chuyển hướng script Shell: https://www.gnu.org/software/bash/manual/html_node/Redirections.html