4. Lọc (Filters)
4.1.1. Xuất file với cat, tee, head và tail
Các file filter đơn giản nhất chỉ đơn thuần xuất ra nội dung của file. Nó đọc các dòng dữ liệu của file và xuất ra chính nội dung đó. Bạn đã biết hai lệnh cat và tee để hiển thị nội dung file tuy nhiên bạn có thể không biết đó chính là các filter. Lệnh lọc cat nhận đầu vào và gửi dữ liệu từ đầu vào đó ra STDOUT là màn hình. Còn lệnh lọc tee thì copy một bản gởi ra STDOUT còn một bản khác thì gửi đến một file nào đó.
Có thể kết hợp các filter với điều hướng hoặc tuyến dẫn. Ví dụ:
$ cat mydata | lpr $ cat mydata > filenew
Chú ý: Lệnh more cũng dùng để hiển thị nội dung file nhưng nó không là một filter. Ta cần phân biệt giữa lọc và các tiện ích hướng thiết bị khác (device-oriented) như lpr hay
more. Filter gửi kết quả ra STDOUT còn các tiện ích hướng thiết bị thì nhận dữ liệu từ STDIN và gửi kết quả ra thiết bị. Với lpr thì thiết bị là máy in còn với lệnh more thì thiết bị là màn hình. Các tiện ích hướng thiết bị có thể nhận đầu vào từ một filter song nó chỉ có thểđưa kết quả ra thiết bị.
Ví dụ:
$ cat file1 file2 | more $ cat file1 file2 | lpr $ cat file1 file2 > file3
Hai lệnh cuối tương đương với:
$ cat file1 file2 | tee file3 | lpr
Hiển thị phần đầu hoặc cuối file: Lệnh head, tail
Thay vì hiển thị toàn bộ nội dung file, ta có thể chỉ hiển phần đầu hoặc phần cuối của nó thông qua filter head và tail.
Ví dụ:
$ cat preface
Xin chao, toi la dong 1. Con toi la dong 2. Toi la dong 3.
Toi la dong 4, xin chao. Con toi la dong 5.
Xin chao, toi la dong 6.
Toi la dong 7, dong cuoi cung.
$ head -3 preface
Xin chao, toi la dong 1. Con toi la dong 2. Toi la dong 3.
$ tail -2 preface
Xin chao, toi la dong 6.
Toi la dong 7, dong cuoi cung.
Tuỳ chọn của lệnh head và tail là số dòng cần hiển thị. Nếu không có tuỳ chọn thì mặc định số dòng hiển thị là 10.