Stdout là gì

tdin, tdout, cùng tderr là tía luồng dữ liệu được chế tạo khi chúng ta khởi chạy một lệnh Linux. Quý Khách hoàn toàn có thể ử dụng chúng để hiểu liệu những tập lệnh của doanh nghiệp đang rất được chuyển làn đường hoặc chuy

*

NộI Dung:

*

stdin, stdout, với stderr là tía luồng dữ liệu được tạo nên khi chúng ta khởi chạy một lệnh Linux. Quý khách hàng có thể áp dụng bọn chúng để tìm hiểu liệu các tập lệnh của công ty đang rất được chuyển làn phân cách hoặc chuyển qua làn đường khác. Chúng tôi chỉ cho bạn giải pháp làm.

Bạn đang xem: Stdout là gì

Luồng tsay mê gia nhị điểm

Ngay khi chúng ta bắt đầu tìm hiểu về những hệ điều hành y như Linux với Unix, các bạn sẽ thấy những thuật ngữ stdin, stdout, với stederr. Đây là tía luồng tiêu chuẩn được thiết lập cấu hình khi 1 lệnh Linux được triển khai. Trong máy mbachulski.com tính, luồng là sản phẩm có thể truyền tài liệu. Trong trường vừa lòng của những luồng này, tài liệu đó là văn bạn dạng.Các dòng dữ liệu, giống hệt như làn nước, gồm nhì đầu. Chúng bao gồm một mối cung cấp và một luồng ra. Bất kỳ lệnh Linux làm sao bạn đang thực hiện các hỗ trợ một đầu của từng luồng. Đầu tê được xác định bởi vì shell khởi chạy lệnh. Đầu cuối đó sẽ được kết nối cùng với cửa sổ đầu cuối, kết nối với con đường ống hoặc được đưa tìm hiểu tệp hoặc lệnh không giống, theo dòng lệnh vẫn khởi chạy lệnh.


Luồng chuẩn Linux

Trong Linux,stdin là luồng đầu vào tiêu chuẩn. Vấn đề này đồng ý văn bản làm cho nguồn vào của chính nó. Đầu ra văn uống bạn dạng từ lệnh cho tới trình bao được gửi vào luồng stdout (tiêu chuẩn ra). Thông báo lỗi từ lệnh được gửi vào luồng stderr (lỗi chuẩn).Vì vậy, bạn cũng có thể thấy rằng có nhị luồng đầu ra output, stdout với stderr với một luồng nguồn vào, stdin. Bởi bởi từng thông báo lỗi và đầu ra output thông thường gồm ống dẫn riêng để đưa bọn chúng đến hành lang cửa số đầu cuối, chúng rất có thể được xử lý chủ quyền cùng nhau.

Luồng được cách xử lý y như tệp

Các luồng trong Linux — giống như phần lớn đầy đủ đồ vật khác — được coi nlỗi thể chúng là tệp. quý khách hàng hoàn toàn có thể đọc văn bạn dạng từ bỏ tệp và bạn cũng có thể ghi vnạp năng lượng bạn dạng vào tệp. Cả hai hành động này phần lớn tương quan đến một luồng dữ liệu. Vì vậy, khái niệm xử trí luồng tài liệu dưới dạng tệp chưa phải là vô số.

Mỗi tệp được link với cùng 1 tiến trình được cấp cho một trong những độc nhất nhằm xác minh nó. Đây được điện thoại tư vấn là cỗ thể hiện tệp. Bất cđọng khi nào một hành động được đề xuất triển khai trên một tệp, bộ biểu hiện tệp được thực hiện nhằm xác định tệp.


Những giá trị này luôn được sử dụng mang lại stdin, stdout, và stderr:0: stdin1: stdout2: stderr

Phản ứng với Pipes với Redirects

Để thuận lợi ra mắt chủ đề của người nào kia, một kỹ thuật phổ cập là dạy một phiên bản đơn giản dễ dàng hóa của chủ đề. lấy ví dụ, với ngữ pháp, họ được cho thấy thêm rằng phép tắc là "I trước E, bên cạnh sau C." Nhưng trên thực tiễn, có khá nhiều nước ngoài lệ đối với nguyên tắc này rộng là bao gồm trường phù hợp tuân thủ theo đúng nó.

Tương từ bỏ, lúc nói đến stdin, stdout, với stderr thật tiện lợi Khi giới thiệu định đề được đồng ý rằng một quy trình lưỡng lự cũng giống như không quan tâm nơi tía luồng tiêu chuẩn của nó được dứt. Một quá trình gồm nên quyên tâm coi đầu ra output của chính nó sẽ đến đầu cuối giỏi được chuyển làn đường thành một tệp? Nó thậm chí là rất có thể biết liệu đầu vào của chính nó tới từ bàn phím giỏi đang rất được đưa vào nó xuất phát từ một quá trình khác?Trên thực tiễn, một quy trình biết — hoặc ít nhất là nó có thể tìm ra, nếu nó lựa chọn kiểm tra — với nó có thể đổi khác hành động của chính nó mang đến tương xứng trường hợp người sáng tác phần mềm đưa ra quyết định thêm công dụng đó.


Chúng ta có thể thấy sự biến đổi hành động này cực kỳ thuận lợi. Hãy thử nhì lệnh sau:

ls

*

ls | nhỏ mèo

*

Các Lệnh ls chuyển động khác nếu như áp ra output của nó (stdout) đang được đưa vào một trong những lệnh khác. Nó làChuyển sang 1 cổng output cột nhất, nó chưa hẳn là thay đổi được tiến hành vì chưng con mèo. Và Sẽ làm cho điều tựa như nếu như áp ra output của chính nó đang được gửi hướng:ls> capture.txt

*

mèo capture.txt

*

Chuyển phía stdout với stderr

Có một ưu thế lúc có thông tin lỗi được gửi vị một luồng chuyên được dùng. Nó Có nghĩa là Cửa Hàng chúng tôi có thể chuyển làn áp ra output của lệnh (stdout) vào một trong những tệp cùng vẫn thấy ngẫu nhiên thông báo lỗi nào (stderr) vào cửa sổ đầu cuối. Bạn có thể bội phản ứng với các lỗi nếu bạn buộc phải, khi bọn chúng xảy ra. Nó cũng ngăn các thông báo lỗi lây truyền sang trọng tệp stdout đã được chuyển làn phân cách thành.Nhập văn bản sau vào trong 1 trình biên soạn thảo và lưu lại nó vào một trong những tệp mang tên là error.sh.

#! / bin / bash emang đến "Sắp nỗ lực truy cập vào trong 1 tệp ko tồn tại" cát bad-filename.txtLàm mang đến tập lệnh rất có thể tiến hành được bởi lệnh này:

chhack + x error.shDòng thứ nhất của tập lệnh tái diễn văn bạn dạng cho tới hành lang cửa số đầu cuối, thông quasuối stdout. Dòng thiết bị nhị cố gắng truy cập vào trong 1 tệp không lâu dài. Vấn đề này sẽ tạo nên ra một thông báo lỗi được gửi vào stderr.Chạy tập lệnh bằng lệnh này:

./error.sh

*

Chúng ta có thể thấy rằng cả nhì luồng đầu ra, stdout cùng stderr, đã được hiển thị trong hành lang cửa số đầu cuối.

*

Hãy thử chuyển sang làn đường khác đầu ra output mang lại một tệp:

./error.sh> capture.txt

*

Thông báo lỗi được gửi qua stderr vẫn được gửi đến cửa sổ đầu cuối. Chúng tôi rất có thể bình chọn câu chữ của tệp để xem liệu áp ra output stdout đã có được đưa mang đến tệp.mèo capture.txt

Đầu ra từ stdin đã được chuyển tìm hiểu tệp nhỏng muốn chờ.

*

Các > biểu tượng chuyển hướng vận động với stdout theo mặc định. Quý Khách rất có thể áp dụng một trong số bộ biểu hiện tệp số để đã cho thấy luồng Áp sạc ra chuẩn nào bạn muốn chuyển làn đường.Để chuyển làn rõ ràng stdout, thực hiện chỉ dẫn chuyển sang làn đường khác này:1>Để chuyển qua làn đường khác ví dụ stderr, sử dụng lý giải chuyển sang làn đường khác này:2>Hãy test kiểm soát lại cùng lần này bọn họ vẫn sử dụng 2>:./error.sh 2> capture.txt

*

Thông báo lỗi được chuyển hướng và stdout tin nhắn emang lại được gửi mang lại hành lang cửa số đầu cuối:

*

Hãy coi các gì gồm trong tệp capture.txt.

mèo capture.txt

Các tin nhắn stderr ngơi nghỉ trong capture.txt nlỗi mong chờ.

*

Chuyển phía Cả stdout với stderr

Chắc chắn, ví như chúng ta cũng có thể chuyển sang làn đường khác stdout hoặc stderr đến một tệp độc lập với nhau, chúng ta yêu cầu hoàn toàn có thể chuyển làn chúng cùng một thời điểm, đến nhì tệp không giống nhau?Có, công ty chúng tôi hoàn toàn có thể. Lệnh này sẽ phía stdout vào một tệp mang tên là capture.txt cùng stderr tới một tệp có tên là error.txt../error.sh 1> capture.txt 2> error.txt

*

Bởi vị cả nhì luồng đầu ra output - đầu ra output tiêu chuẩn cùng lỗi tiêu chuẩn - các được chuyển đào bới tệp, không tồn tại cổng output hiển thị vào cửa sổ đầu cuối. Chúng tôi được đưa quay lại vệt kể cái lệnh nhỏng thể không tồn tại gì xảy ra.

*

Hãy chất vấn ngôn từ của từng tệp:

cát capture.txtmèo error.txt

*

Chuyển phía stdout và stderr đến và một tệp

Thật dễ dàng, Shop chúng tôi đang gửi từng luồng đầu ra output tiêu chuẩn chỉnh vào tệp chuyên được sự dụng của riêng nó. Sự kết hợp nhất không giống mà lại Cửa Hàng chúng tôi hoàn toàn có thể có tác dụng là gửi cả hai stdout với stderr mang đến cùng một tệp.Chúng ta hoàn toàn có thể đã có được điều đó bởi lệnh sau:

./error.sh> capture.txt 2> và 1Hãy phá vỡ lẽ điều này.

./error.sh: Khởi chạy tệp kịch phiên bản error.sh.> capture.txt: Chuyển phía luồng stdout tới tệp capture.txt. > là mbachulski.comết tắt của 1>.2>&1: Điều này sử dụng lệnh &> chuyển qua làn đường khác. Hướng dẫn này cho phép bạn từng trải trình bao tiến hành một luồng mang lại thuộc đích với một luồng không giống. Trong trường hòa hợp này, Shop chúng tôi đang nói "chuyển làn phân cách luồng 2, stderr, mang đến thuộc đích mà luồng 1, stdout, đang rất được gửi tìm hiểu. ”

*

Không tất cả áp ra output hiển thị. Điều kia thật đáng khuyến khích.

Xem thêm: Thẩm Định Tín Dụng Là Gì ? Công Việc Đòi Hỏi Nhiều Kinh Nghiệm

*

Hãy khám nghiệm tệp capture.txt với xem bao gồm gì trong đó.

cát capture.txt

*

Cả hai stdout với các luồng stderr đã có đưa tìm hiểu một tệp đích độc nhất.Để cổng đầu ra của luồng được chuyển qua làn đường khác và bị nockout quăng quật một cách lặng lẽ, hãy hướng cổng output tới / dev / null.

Phát hiện nay chuyển hướng làn phân cách trong tập lệnh

Chúng ta sẽ bàn luận về phong thái một lệnh có thể vạc hiện coi tất cả bất kỳ luồng nào đang rất được chuyển làn đường hay không và rất có thể chọn biến hóa hành động của chính nó mang lại cân xứng. Chúng ta hoàn toàn có thể thực hiện điều này trong những tập lệnh của riêng mình không? Có, Cửa Hàng chúng tôi hoàn toàn có thể. Và nó là một trong những nghệ thuật dễ dàng nắm bắt và sử dụng.

Nhập văn bản sau vào trong 1 trình biên soạn thảo với lưu giữ nó dưới dạng input.sh.

#! / bin / bash if <-t 0>; sau đó echo stdin tới từ bàn phím khác emang đến stdin đến từ một mặt đường ống hoặc một tệp fiSử dụng lệnh sau để làm đến nó hoàn toàn có thể xúc tiến được:

chmod + x input.shPhần sáng ý là bài khám nghiệm vào ngoặc vuông. Các -t (terminal) tùy lựa chọn trả về true (0) nếu như tệp được links với cỗ thể hiện tệp ngừng trong hành lang cửa số đầu cuối. Chúng tôi đã áp dụng bộ diễn tả tệp 0 làm cho đối số mang lại bài kiểm soát, cỗ trình bày này thay mặt chostdin.Nếu stdin được kết nối với một cửa sổ đầu cuối, xem sét đã chứng minh là đúng. Nếu stdin được liên kết với cùng một tệp hoặc một mặt đường ống, quá trình bình chọn sẽ không thành công.Chúng tôi hoàn toàn có thể sử dụng ngẫu nhiên tệp văn phiên bản dễ dãi nào để chế tác nguồn vào cho tập lệnh. Tại phía trên công ty chúng tôi vẫn sử dụng một tệp có tên là dummy.txt.

./đầu vào.sh

*

Kết trái cổng output cho biết rằng tập lệnh phân biệt rằng đầu vào ko đến từ bàn phím cơ mà tới từ một tệp. Nếu đang lựa chọn, chúng ta cũng có thể đổi khác hành động của tập lệnh mang đến tương xứng.

*

Đó là với chuyển hướng tệp, hãy thử nó với đường ống.

mèo dummy.txt | ./đầu vào.sh

*

Tập lệnh nhận thấy rằng nguồn vào của chính nó đang được chuyển vào. Hay đúng chuẩn rộng, nó nhận ra một đợt nữa rằng luồng stdin không được kết nối với cửa sổ đầu cuối.

*

Hãy chạy tập lệnh cơ mà không tồn tại đường dẫn hoặc chuyển qua làn đường khác.

./input.sh

*

Các luồng stdin được liên kết cùng với cửa sổ đầu cuối với tập lệnh báo cáo điều đó khớp ứng.Để soát sổ điều tương tự cùng với luồng đầu ra output, bọn họ buộc phải một tập lệnh bắt đầu. Nhập câu chữ sau vào một trong những trình chỉnh sửa với lưu nó dưới dạng output.sh.

#! / bin / bash if <-t 1>; tiếp đến eđến stdout sẽ tới cửa sổ đầu cuối khác emang lại stdout đang được chuyển hướng làn phân cách hoặc chuyển qua làn đường khác fiSử dụng lệnh sau để triển khai mang đến nó hoàn toàn có thể thực hiện được:

chgian lận + x đầu vào.shTxuất xắc thay đổi đáng kể nhất so với tập lệnh này là vào bài bác khám nghiệm vào vệt ngoặc vuông. Chúng tôi đã sử dụng chữ số 1 để đại diện mang đến trình thể hiện tệp mang lại stdout.Hãy demo nó ra. Chúng tôi sẽ gửi cổng output trải qua con mèo../output | bé mèo

*

Tập lệnh nhận biết rằng cổng output của chính nó ko trực tiếp nối cửa sổ đầu cuối.

*

Chúng tôi cũng có thể khám nghiệm tập lệnh bằng phương pháp chuyển làn phân cách áp ra output thành một tệp.

./output.sh> capture.txt

*

Không tất cả hiệu quả cổng đầu ra cho cửa sổ đầu cuối, Shop chúng tôi vẫn lặng lẽ trở lại dấu nói lệnh. Nlỗi Shop chúng tôi ao ước ngóng.

*

Chúng ta rất có thể coi bên trong tệp capture.txt để xem hầu như gì đã có chụp. Sử dụng lệnh sau để gia công những điều đó.

cát capture.sh

*

Một lần tiếp nữa, khám nghiệm đơn giản trong tập lệnh của Cửa Hàng chúng tôi phạt hiển thị rằng luồng stdout không được gửi trực tiếp nối cửa sổ đầu cuối.Nếu công ty chúng tôi chạy tập lệnh mà lại không tồn tại bất kỳ băng thông hoặc chuyển làn đường làm sao, nó sẽ thấy ra rằng stdout đang rất được đưa trực sau đó hành lang cửa số đầu cuối../output.sh

*

Và đó chính xác là mọi gì họ thấy.

*

Các chiếc ý thức

Biết bí quyết biết các tập lệnh của người sử dụng đã đạt được kết nối cùng với cửa sổ đầu cuối tuyệt con đường ống dẫn hoặc đang được chuyển hướng làn phân cách hay không, cho phép chúng ta kiểm soát và điều chỉnh hành mbachulski.com của bọn chúng cho tương xứng.

Xem thêm: Bật Mí 5 Cách Rửa Mũi Cho Bé Sơ Sinh Đúng Cách, Rửa Mũi Cho Trẻ Sơ Sinh Có Nguy Hiểm Không

Kết trái ghi nhật ký cùng chẩn đân oán rất có thể cụ thể hơn hoặc thấp hơn, tùy trực thuộc vào bài toán nó lộ diện bên trên màn hình hiển thị hay 1 tệp. Thông báo lỗi hoàn toàn có thể được ghi vào trong 1 tệp khác cùng với cổng output lịch trình thông thường.


Chuyên mục: Kiến thức