Hầu hết các quá trình đều được khởi tạo bằng các lệnh Unix được thể hiện trên màn hình và dữ liệu (đọc vào đều được nhập từ bàn phím). Tuy nhiên khi xuất hiện lỗi, quá trình sẽ ghi các thông báo lỗi của chúng mặc định ra màn hình.
Chúng ta đã thấy sử dụng lệnh cat để ghi các nội dung file ra màn hình như thế nào.
Bây giờ hãy đánh cat, không cần chỉ định một file nào đó để đọc
% cat
Sau đó đánh một vài từ trên bàn phím và nhấn phím [Return].
Cuối cùng nhấn và giữ [Ctrl] đồng thời nhấn [d] (được viết ngắn là ^D) để kết thúc việc nhập đầu vào.
Điều gì sẽ xảy ra?
Nếu bạn chạy lệnh cat không chỉ định một file cụ thể nào để đọc, nó sẽ đọc đầu vào từ bàn phím và nhận lệnh kết thúc file (^D), rồi copy ra đầu màn hình.
Trong Unix chúng ta có thể redirect cả đầu vào và đầu ra của các lệnh.
1. Redirect đầu ra
Chúng ta sử dụng ký hiệu > để redirect đầu ra của lệnh. Cho ví dụ, để tạo một file có tên list1 gồm một danh sách trái cây, bạn hãy đánh
% cat > list1
Sau đó đánh vào tên của một số loại trái cây. Nhấn [Return] sau mỗi lần như vậy
pear
banana
apple
^D {có nghĩa là nhấn [Ctrl] và [d] để kết thúc}
Những gì xảy ra là lệnh cat sẽ đọc từ bàn phím và > redirect ra màn hình, vào một file có tên gọi list1
Để đọc nội dung bên trong của file, bạn hãy đánh
% cat list1
Bài tập 3a
Sử dụng phương pháp ở trên, tạo một file khác có tên gọi list2 gồm có tên các loại trái cây sau: orange, plum, mango, grapefruit. Sau đó đọc các nội dung bên trong list2.
Nối dữ liệu vào một file
Thủ tục >> sẽ nối dữ liệu đầu ra vào một file. Chính vì vậy để có thêm các mục trong file list1, bạn hãy đánh
% cat >> list1
Sau đó đánh vào tên các loại trái cây
peach
grape
orange
^D (Control D để kết thúc)
Để đọc nội dung của file, đánh
% cat list1
Bạn nên có hai file trong trường hợp này. Một file gồm có 6 loại trái cây còn file kia gồm 4 loại.
Chúng ta sẽ sử dụng lệnh cat để nối list1 và list2 thành một file mới có tên gọi biglist. Đánh
% cat list1 list2 > biglist
Những gì đang thực hiện ở đây là đọc nội dung của list1 và list2 một cách lần lượt, sau đó ghi đầu ra vào một file có tên biglist
Để đọc các nội dung của file mới, đánh
% cat biglist
2. Redirect đầu vào
Chúng ta sử dụng ký hiệu < để redirect đầu vào của một lệnh
Lệnh phân loại theo alphabe hoặc phân loại theo số trong một danh sách. Đánh
% sort
Sau đó nhập vào tên của một số loài động vật. Nhấn [Return] sau mỗi lần nhập
dog
cat
bird
ape
^D (control d để kết thúc)
Đầu ra sẽ là
ape
bird
cat
dog
Sử dụng < bạn có thể redirect đầu vào từ một file thay cho phải nhập từ bàn phím. Cho ví dụ, để phân loại một danh sách các trái cây, đánh
% sort < biglist
và một danh sách được liệt kê sẽ thể hiện trên màn hình
Để đầu ra là một danh sách đã được phân loại cho một file nào đó, đánh
% sort < biglist > slist
Sử dụng cat để đọc nội dung bên trong file slist
3. Pipes
Để xem ai có trong hệ thống với bạn, đánh
% who
Một phương pháp để có được danh sách đã được phân loại là bằng cách đánh
% who > names.txt
% sort < names.txt
Thủ tục này hơi chậm đôi chút và bạn cần phải nhớ remove file tạm thời đã gọi các tên khi kết thúc. Những gì bạn muốn thực hiện là kết nối đầu ra của lệnh who trực tiếp đến đầu vào của lệnh sort. Điều này chính xác là những gì lệnh pipes thực hiện. Ký hiệu cho một pipe là “|”.
Cho ví dụ đánh
% who | sort
sẽ cho cùng các kết quả như trên, nhưng nhanh hơn và rõ ràng hơn
Đê tìm ra số lượng bao nhiêu người dung đã đăng nhập, đánh
% who | wc -l
Bài tập 3b
Sử dụng pipe, hiển thị tất cả các dòng trong list1 và list2 gồm có ký tự ‘p’, và phân loại kết quả thu được.
Tóm tắt
Lệnh | Ý nghĩa |
command > file | Redirect đầu ra vào một file |
command >> file | Nối thêm đầu ra vào một file |
command < file | Redirect đầu vào từ một file |
command1 | command2 | Pipe đầu ra của lệnh 1 vào đầu ra của lệnh 2 |
cat file1 file2 > file0 | Nối file1 và file2 thành file0 |
sort | Phân loại dữ liệu |
who | Liệt kê người dùng hiện đã đăng nhập |