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 -5Lệ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 | uniqNộ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 -lMỗ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.
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để đọcvisitors.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ằnguniqchỉ 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ử
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
4Thư mục
Tạo thư mụcSao chép thư mụcDi chuyển và đổi tên thư mụcXóa thư mụcÔn tập: thao tác với thư mục2Điều hướng
In đường dẫn thư mục hiện tạiLiệt kê tệpChuyển thư mụcĐường dẫn tuyệt đối và tương đốiThư mục chính và thư mục gốcÔn tập: tìm đường8Chuyển hướng
Đầu ra chuẩnGhi đè vào tệpGhi thêm vào tệpĐầu vào chuẩnLỗi chuẩnÔn tập: Công cụ tạo nhật ký6Ký tự đại diện và mẫu
Ký tự đại diện dấu saoKý tự đại diện dấu hỏiKý tự đại diện trong ngoặc vuôngKết hợp ký tự đại diệnÔn tập: thao tác có chọn lọc9Đường ống
Đường ống là gìNối hai lệnh bằng đường ốngNối nhiều lệnh bằng đường ốngDùng đường ống với grepÔn tập: luồng xử lý dữ liệuTự luyện tập: Playground Terminal