Cách chuyển hướng stderr sang stdout trong Bash

How Redirect Stderr Stdout Bash



Các lệnh trong Linux nhận một số đầu vào từ người dùng, có thể là một tệp hoặc bất kỳ thuộc tính nào và khi thực thi, chúng đưa ra một số đầu ra được gọi là đầu ra chuẩn. Đầu ra tiêu chuẩn có thể là đầu ra thành công hoặc đầu ra lỗi; cả hai sẽ được hiển thị trên màn hình thiết bị đầu cuối của bạn. Nhưng trong một số trường hợp, bạn muốn lưu trữ kết quả đầu ra tiêu chuẩn vào một tệp để thử nghiệm hoặc gỡ lỗi mã. Trong Linux, các kết quả đầu ra này có thể được chuyển hướng đến một tệp và quá trình thu nhận nó được gọi là chuyển hướng.







Mọi quy trình Trong Linux tạo ra ba luồng dữ liệu, stdin, stdout và stderr:



  • stdin : Nhận đầu vào từ người dùng thông qua bàn phím
  • stdout : Hiển thị đầu ra trên màn hình
  • stderr : Hiển thị thông tin lỗi trên màn hình

Mọi luồng dữ liệu có một id số:



Id số Tên
0 stdin
1 stdout
2 stderr

Hãy giải thích chi tiết hơn về chuyển hướng:





Cách chuyển hướng đầu ra Chuẩn và Lỗi chuẩn trong Bash:

Để chuyển hướng đầu ra chuẩn của lệnh, chúng ta sẽ sử dụng 1 với toán tử chuyển hướng lớn hơn dấu>:

$ls 1>stdout.txt

Lệnh trên sẽ tạo một tệp và đặt đầu ra tiêu chuẩn của lệnh ls trong tệp stdout.txt.



Để đọc tệp stdout.txt, hãy sử dụng:

$con mèostdout.txt

Chúng tôi cũng có thể chuyển hướng lỗi chuẩn đến một tệp bằng cách sử dụng lệnh:

$con mèomyfile.txt2>stderr.txt

Để xem tệp stderr.txt, hãy sử dụng:

$con mèostderr.txt

Hãy chắc chắn rằng sử dụng 2 sẽ lớn hơn dấu>. Vì không có tệp myfile.txt trong thư mục, lệnh cat sẽ đưa ra một lỗi sẽ được thêm vào tệp stderr.txt.

Các đầu ra tiêu chuẩn này cũng có thể được chuyển hướng bằng một lệnh duy nhất, sử dụng:

$ls 1>stdout.txt2>stderr.txt

Đầu ra của lệnh ls sẽ được viết trong stdout.txt tệp, nhưng stderr.txt sẽ vẫn trống vì sẽ không có lỗi.

Bây giờ chúng ta hãy làm cho stderr.txt:

$con mèomyfile.txt1>stdout.txt2>stderr.txt

Sử dụng lệnh được đề cập bên dưới để đọc stderr.txt.

$con mèostderr.txt

Và tất nhiên, stdout.txt sẽ trống.

Phần kết luận :

Lệnh Linux khi thực thi đưa ra đầu ra tiêu chuẩn có thể là đầu ra thành công hoặc đầu ra lỗi. Nói chung, các kết quả đầu ra này không thể được chuyển hướng bằng các toán tử chuyển hướng; chúng ta cần sử dụng id số cụ thể với dấu>. Trong hướng dẫn này, chúng tôi đã học cách sử dụng các phím số này để chuyển hướng đầu ra tiêu chuẩn đến một tệp có các ví dụ.