Đường ống
Một đường ống là một chuỗi gồm một hoặc nhiều lệnh được phân tách bằng một trong các toán tử điều khiển | hoặc | &. Định dạng cho một đường ống là:
[time [-p]] [ ! ] command [ | or |& command2 ... ]
Đầu ra tiêu chuẩn của lệnh được kết nối thông qua một đường ống đến đầu vào tiêu chuẩn của lệnh2. Kết nối này được thực hiện trước bất kỳ chuyển hướng nào được chỉ định bởi lệnh (xem GIẢM GIÁ bên dưới). Nếu | & được sử dụng, lỗi tiêu chuẩn của lệnh được kết nối với đầu vào tiêu chuẩn của lệnh2 thông qua đường ống; nó là viết tắt cho 2> & 1 |. Chuyển hướng ngầm định này của lỗi tiêu chuẩn được thực hiện sau bất kỳ chuyển hướng nào được chỉ định bởi lệnh.
Trạng thái trả về của một đường ống là trạng thái thoát của lệnh cuối cùng, trừ khi tùy chọn đường ống được bật. Nếu đường ống được bật, trạng thái trả về của đường ống là giá trị của lệnh cuối cùng (ngoài cùng bên phải) để thoát với trạng thái khác không hoặc bằng 0 nếu tất cả các lệnh thoát thành công. Nếu từ dành riêng! đi trước một đường ống, trạng thái thoát của đường ống đó là sự phủ định logic của trạng thái thoát như mô tả ở trên. Shell chờ tất cả các lệnh trong đường ống kết thúc trước khi trả về một giá trị.
Nếu từ dành riêng thời gian đi trước một đường ống, thì thời gian trôi qua cũng như thời gian sử dụng và thời gian sử dụng của hệ thống được sử dụng sẽ được báo cáo khi đường ống kết thúc. Tùy chọn -p thay đổi định dạng đầu ra thành định dạng được chỉ định bởi POSIX. Biến TIMEFORMAT có thể được đặt thành một chuỗi định dạng chỉ định cách hiển thị thông tin thời gian; xem mô tả của TIMEFORMAT trong Shell Shell bên dưới.
Mỗi lệnh trong một đường ống được thực hiện như một quy trình riêng biệt (nghĩa là trong một lớp con).
type time
để xem nó là gì.