Pipe là gì? Làm việc với dấu pipe trong linux.
Một trong các công cụ mạnh mẽ cho shell là dấu pipe (|). Pipe lấy output từ câu lệnh này và dùng nó làm input cho câu lệnh kế tiếp, chúng ta cũng có thể dùng bao nhiêu dấu pipe tuỳ thích cho đến khi đạt được output muốn xuất ra.
Pipe là gì?
Pipe là công cụ chủ yếu dùng để lọc, dùng để lọc nội dung của 1 file lớn. Để tìm một chuỗi hoặc một từ cụ thể (Kết hợp với công cụ grep và sort). Ví dụ như sau:
cmd01 |cmd02
Sử dụng Pipe
Cả cmd01 và cmd02 đều là công cụ dòng lệnh và có in kết quả ra màn hình, nhưng khi thêm dấu pipes vào thì thông tin của cmd01 không được in ra màn hình mà được chuyển thành input của cmd02.
Chú ý: Đừng nhầm dấu pipe (|) với dấu File Redirection (>) hay (<). Khi dùng dấu (>) hay (<) kết quả được in vào một files thay vì dùng làm input cho câu lệnh sau:
Kết hợp với lệnh cat và wc để đếm số dòng
Giả sử mình có 1 file .txt có chứa 11 dòng
# cat abc.txt | wc -l
Kết hợp giữa lệnh cat và cut, lệnh cut được sử dụng để trích xuất các cột cụ thể. Dấu phân cách cột mặc định là ký tự tab, ví dụ dưới đây sẽ lấy mỗi user trên hệ thống.
Câu lệnh thao tác:
cat /etc/thah | cut -d ":" -f 1
trong đó -d là options của dấu phân cách, -f là các trường được phân cách bởi dấu phân cách.
Kết hợp giữa cat và awk, awk được sử dụng để tìm kiếm và xử lý file text. Nó có thể tìm kiếm một hoặc nhiều file để xem các file có dòng nào bao gồm những pattern cần tìm kiếm và sau đó thực hiện những action. Cú pháp của lệnh awk như sau:
head /etc/thah | awk -F: '{print "Username: " $1}'
Ví dụ để lọc giữ lại các IP truy cập có trong file access.log, trong trường hợp cần nhanh gọn bạn có thể sử dụng lệnh cut với ký tự phân tách là khoảng trắng. Do ta thấy dữ liệu IP ta cần lấy là phần tử đầu tiên do đó ta sẽ kèm tùy chọn -f 1
cat access.log | cut -d " " -f 1
74.218.234.48
66.249.73.135
98.85.3.179
199.16.156.125
199.16.156.125
209.17.114.78
209.85.238.199
46.105.14.53
195.211.162.22
195.211.162.22
46.118.118.101
209.85.238.199
66.249.73.135
180.76.5.194
Ta sử dụng file access.log để tương tác. Đầu tiên chạy lện Download flie log về để thực hành:
wget https://raw.githubusercontent.com/linuxacademy/content-elastic-log-samples/master/access.log
Với hướng dẫn trên hị vọng có thể giúp bạn biết về chức năng sử dụng dấu pipe trong linux và có thể giúp các bạn phân tích được hệ thống khi gặp sự cố vấn đề.