Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -

Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -

Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -

Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -

Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -
Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR -
(028) 35124257 - 0933 427 079

Luồng Dữ liệu Chuẩn trong Linux: STDIN, STDOUT và STDERR

15-08-2025

Một khái niệm nền tảng trong Linux shell là mọi dữ liệu vào/ra đều được xử lý như dòng dữ liệu (stream). Điều này áp dụng cả cho dữ liệu đầu vào, dữ liệu đầu ra, và cả thông báo lỗi. Linux định nghĩa ba luồng dữ liệu chuẩn:

  • STDIN (Standard Input): Luồng nhập dữ liệu tiêu chuẩn, mặc định lấy từ bàn phím, nhưng có thể lấy từ tệp hoặc luồng khác.
  • STDOUT (Standard Output): Luồng xuất dữ liệu tiêu chuẩn, mặc định gửi ra màn hình, nhưng có thể chuyển hướng (redirect) sang tệp, thiết bị hoặc chương trình khác.
  • STDERR (Standard Error): Luồng xuất dữ liệu dành riêng cho thông báo lỗi, mặc định ra màn hình, nhưng cũng có thể chuyển hướng đi nơi khác để debug hoặc lưu log.

1. STDIN – Luồng Nhập Tiêu Chuẩn

Ví dụ với lệnh cat:
cat test test 123 123
Khi không chỉ định tệp, cat sẽ đọc dữ liệu từ STDIN (bàn phím), và xuất ra STDOUT (màn hình).
Đọc tệp trực tiếp:
cat testfile.txt
Hoặc dùng ký hiệu < để chuyển nội dung tệp thành STDIN cho lệnh:
cat < testfile.txt

2. STDOUT – Luồng Xuất Tiêu Chuẩn

Ví dụ với biến môi trường $PATH:
echo $PATH
Xuất ra màn hình.
Chuyển hướng STDOUT sang tệp:
echo $PATH > path.txt
Ký hiệu > ghi đè tệp (clobbering).
Dùng >> để ghi nối tiếp (append):
echo "More test data" >> path.txt

3. STDERR – Luồng Xuất Lỗi

Ví dụ lỗi với ls:
ls -al abc123.txt > output.txt
Tệp abc123.txt không tồn tại, thông báo lỗi vẫn hiện trên màn hình vì nó đi qua STDERR, không phải STDOUT.
Chuyển hướng lỗi ra "hố đen" /dev/null:
ls -al abc123.txt > output.txt 2> /dev/null
Chuyển hướng lỗi sang tệp log:
ls -al abc123.txt > output.txt 2> errors.txt
  • 2>: 2 đại diện cho STDERR
  • >>: ghi nối tiếp lỗi thay vì ghi đè.

4. Kỹ thuật Kết hợp

  • Ghi STDOUT và STDERR vào hai tệp khác nhau để phân tích.
  • Ghi nối tiếp để tạo log lỗi lâu dài.
  • Gửi STDERR qua pipeline để phân tích riêng.
 Tips thực chiến: Trong các script giám sát hoặc automation, việc tách STDOUT và STDERR giúp phân loại dữ liệu kết quả và thông tin lỗi, hỗ trợ debug dễ dàng hơn. Trong môi trường SOC hoặc DevOps, kỹ thuật redirect còn được dùng để thu thập log và giám sát tiến trình.

FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0