Friday, January 7, 2011

[Shell script] Pipes

Giả sử bạn muốn xem  hiện tại trong hệ thống có những gói rpm nào được cài đặt và muốn sắp xếp chúng theo một thứ tự nhất định. Khi đó, dựa vào I/O redirection thì giải pháp có thể là sử dụng 2 dòng lệnh:


$ rpm -qa > rpm.ls
$ sort < rpm.ls
 Ở dòng lệnh đầu tiên, câu lệnh này sẽ liệt kê tất cả(-qa) các gói rpm đã đc cài đặt trong hệ thống và lưu vào trong file rpm.ls. Tại dòng lệnh thứ 2, câu lệnh sort sẽ sắp xếp các dữ liệu trong file rpm.ls này. Vì vậy, kết quả ta có đc là một ds các rpm packages đã đc cài đặt theo một thứ tự.

 Ngoài cách trên ra, ta còn có một cách để có thể đưa output của câu lệnh này làm input của câu lệnh khác ngay lập tức mà ko cần phải lưu trữ ra file. Quá trình này gọi là piping. Ký tự đc sử dụng ở đây là " |  "
Cú pháp:

$ command1 | command2
grep là câu lệnh tìm kiếm tring. Câu lệnh rpm sẽ liệt tất cả các gói rpm sau đó đưa dữ liệu qua câu lệnh grep để tìm kiếm những cái tên nào dính dáng đến chữ "http" và xuất ra màn hình.

Piping cung cấp một cách để liên kết các câu lệnh với nhau. Linux sẽ chạy các câu lệnh cùng lúc, liên kết chúng lại để thực thi tác vụ. Ngay sau khi câu lệnh đầu tiên thực hiện xong nó sẽ gửi dữ liệu xuất ra cho câu lệnh thứ 2. Không hề có một giá trị hỗ trợ nào xen giữa.

 Không có sự giới hạn số lượng pipes sử dụng trong dòng lệnh(giới hạn 255 ký tự trong độ dài của dòng lệnh). Cho nên có thể tiếp tục sử dụng piping.

Câu lệnh trên sẽ liệt kê các gói rpm đc cài đặt có tên dính dáng tới"ab" sau đó sử dụng câu lệnh sort để sắp xếp đưa kết quả cuối cùng là file sort.ls.Câu lệnh tail sẽ lấy ra 10 dòng cuối cùng của file.

=====End=====

No comments:

Post a Comment