Khái niệm Filter trong Unix/Linux


1- Định nghĩa về Filter

Trong thế giới của các hệ điều hành Unix-like, filter là một chương trình mà thường thì nhận dữ liệu từ đầu vào chuẩn (main input stream hay standard input (stdin)) và ghi dữ liệu kết quả của nó tới đầu ra chuẩn (main output stream).

Các filter này thường được sử dụng như là các thành tố của cơ chế ống dẫn (pipeline). Toán tử (operator) pipe (“|”) xuất hiện trong một câu lệnh biểu thị rằng đầu ra của câu lệnh nằm bên trái pipe sẽ được chuyển qua làm đầu vào của câu lệnh nằm bên phải pipe.

grep là một trong nhiều filter “cổ”, có chức năng đơn giản là in ra đầu ra chuẩn (thường là màn hình) bất kỳ dòng nào mà chứa chuỗi được tìm kiếm. Sau đây là một ví dụ về grep:

cut -d : -f 1 /etc/passwd | grep foo

Câu lệnh trên sẽ tìm kiếm tất cả các user đã được đăng ký vào hệ thống (registered user) mà trong username của các user này có chứa từ “foo”. Để đạt được mục tiêu này thì cần tới sự phối hợp của 2 chương trình thông qua cơ chế pipeline (sử dụng toán tử | đặt giữa 2 câu lệnh như ví dụ ở trên)

–       Lệnh cut sẽ lấy ra trường đầu tiên (username) của mỗi dòng trong file /etc/passwd (đây là file lưu trữ thông tin về tất cả các tài khoản người dùng có trên hệ thống). Do có pipe nên cut không xuất kết quả ra màn hình như bình thường mà sẽ chuyển kết quả này làm đầu vào cho lệnh grep ở sau.

–       Lệnh grep tiếp nhận kết quả từ lệnh cut làm đầu vào rồi thực hiện tìm kiếm trong đầu vào này các dòng có chứa chuỗi ký tự “foo” và in kết quả cuối cùng mà người thực hiện câu lệnh mong muốn ra màn hình.

2- Một số chương trình filter trên *nix

awk, cat, cut, expand, compress, grep, head, perl, sort, split, strings, tail, tac, tee, wc

–manthang.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s