Hướng dẫn về Unix: Redirect

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 list1list2 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 list1list2 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
Thứ Bảy, 01/11/2008 10:51
31 👨 1.760
0 Bình luận
Sắp xếp theo