Menu
CoddyTech

Nối nhiều lệnh bằng đường ống

Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 45 trên 82.

Bạn không chỉ có thể kết nối hai lệnh. Bạn có thể nối bao nhiêu lệnh tùy ý bằng pipe, mỗi lệnh xử lý đầu ra của lệnh trước đó.

Chỉ cần thêm các ký hiệu | để mở rộng đường ống (pipeline):

cat data.txt | sort | head -5

Lệnh này đọc tệp, sắp xếp tất cả các dòng theo thứ tự bảng chữ cái, rồi chỉ hiển thị 5 kết quả đầu tiên. Dữ liệu đi từ trái sang phải qua từng lệnh theo thứ tự.

Đây là một ví dụ thực tế để tìm các mục duy nhất đã được sắp xếp:

cat names.txt | sort | uniq

Nội dung tệp được sắp xếp trước tiên, nhờ đó các dòng trùng lặp được nhóm lại với nhau, sau đó uniq xóa các dòng trùng lặp liền kề. Thứ tự rất quan trọng ở đây: uniq chỉ xóa các dòng trùng lặp liền kề, vì vậy phải sắp xếp trước.

Bạn có thể thêm nhiều giai đoạn hơn nữa. Để đếm số tên riêng biệt:

cat names.txt | sort | uniq | wc -l

Mỗi pipe thêm một bước biến đổi. Khi xây dựng các pipeline dài hơn, hãy nghĩ xem mỗi lệnh cần đầu vào gì và tạo ra đầu ra gì. Định dạng đầu ra của lệnh này phải phù hợp làm đầu vào cho lệnh tiếp theo.

challenge icon

Thử thách

Dễ

Tệp visitors.txt chứa danh sách tên khách truy cập có các tên trùng lặp. Dùng một pipeline gồm bốn lệnh để đếm số khách truy cập duy nhất.

Chạy một lệnh duy nhất để:

  • Dùng cat để đọc visitors.txt
  • Chuyển đầu ra sang sort để sắp xếp tên theo thứ tự bảng chữ cái
  • Chuyển đầu ra sang uniq để loại bỏ các mục trùng lặp
  • Chuyển đầu ra sang wc -l để đếm số tên duy nhất

Gợi ý: Kết nối cả bốn lệnh bằng nhiều ký hiệu |. Hãy nhớ rằng uniq chỉ loại bỏ các mục trùng lặp đứng cạnh nhau, vì vậy phải sắp xếp trước khi dùng lệnh này.

Tự làm thử

Terminal
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Playground Terminal