<Trước | Nội dung | Tiếp theo>
Đường ống
Khả năng của các lệnh để đọc dữ liệu từ đầu vào tiêu chuẩn và gửi đến đầu ra tiêu chuẩn được sử dụng bởi một tính năng shell được gọi là đường ống. Sử dụng toán tử đường ống “|” (thanh dọc), đầu ra tiêu chuẩn của một lệnh có thể là đường ống vào đầu vào tiêu chuẩn của người khác:
lệnh1 | lệnh2
lệnh1 | lệnh2
Để chứng minh đầy đủ điều này, chúng ta sẽ cần một số lệnh. Hãy nhớ cách chúng tôi đã nói rằng có một cái mà chúng tôi đã biết chấp nhận đầu vào tiêu chuẩn? nó là ít. Chúng ta có thể sử dụng ít để hiển thị, từng trang, đầu ra của bất kỳ lệnh nào gửi kết quả của nó đến đầu ra tiêu chuẩn:
[tôi @ linuxbox ~] $ ls -l / usr / bin | ít hơn
[tôi @ linuxbox ~] $ ls -l / usr / bin | ít hơn
Điều này là vô cùng tiện dụng! Sử dụng kỹ thuật này, chúng ta có thể kiểm tra đầu ra của bất kỳ lệnh nào tạo ra đầu ra tiêu chuẩn một cách thuận tiện.
Sự khác biệt giữa> và |
Thoạt nhìn, có thể khó hiểu việc chuyển hướng được thực hiện bởi người điều hành đường ống | so với toán tử chuyển hướng >. Nói một cách đơn giản, toán tử chuyển hướng kết nối một lệnh với một tệp trong khi toán tử đường ống kết nối đầu ra của một lệnh với đầu vào của lệnh thứ hai.
lệnh1 > tập tin1 lệnh1 | lệnh2
Rất nhiều người sẽ thử những điều sau đây khi họ đang tìm hiểu về đường ống, "chỉ để xem điều gì sẽ xảy ra."
lệnh1 > lệnh2
Trả lời: Đôi khi điều gì đó thực sự tồi tệ.
Đây là một ví dụ thực tế được gửi bởi một độc giả đang quản lý một thiết bị máy chủ dựa trên Linux. Là siêu người dùng, anh ấy đã làm điều này:
# cd / usr / bin
# ls> ít hơn
Lệnh đầu tiên đưa anh ta vào thư mục nơi hầu hết các chương trình được lưu trữ và lệnh thứ hai yêu cầu trình bao ghi đè tệp ít với đầu ra của ls chỉ huy. Kể từ khi / usr / bin thư mục đã chứa một tệp có tên “less” ( ít chương trình), lệnh thứ hai đã ghi đè lên ít tệp chương trình với văn bản từ ls do đó phá hủy ít chương trình trên hệ thống của mình.
Bài học ở đây là toán tử chuyển hướng âm thầm tạo hoặc ghi đè lên các tệp, vì vậy bạn cần tôn trọng nó.
<Trước | Nội dung | Tiếp theo>