5.5 Chuyển hướng đầu vào/đầu ra, đường ống và bộ lọc
105
đang chạy. Nếu đưa tên một tập tin vào làm tham số cho lệnh cat, thì nội dung
của lệnh này sẽ được đưa tới đầu vào tiêu chuẩn, từ đó lệnh cat sẽ đọc nội dung
này và đưa tới đầu ra tiêu chuẩn (xem sơ đồ).
Nội dung tập tin --> Đầu vào tiêu chuẩn (stdin) --cat--> đầu
ra tiêu chuẩn (stdout)
Đây chỉ là một trường hợp riêng của việc chuyển hướng dữ liệu đầu vào, một
cơ chế rất có ích của hệ vỏ. Và tất nhiên chúng ta cần xem xét kỹ hơn cơ chế này.
5.5
Chuyển hướng đầu vào/đầu ra, đường ống và bộ lọc
Mặc dù, như đã nói ở trên, thông thường đầu vào/đầu ra của một chương trình
liên kết với các đầu vào/đầu ra tiêu chuẩn, trong hệ vỏ còn có các môi trường đặc
biệt cho phép chuyển hướng đầu vào/đầu ra.
5.5.1
Sử dụng >, < và »
Để chuyển hướng đầu vào/ra, sử dụng các ký hiệu “>”, “<” và “»”. Thường sử
dụng việc chuyển hướng đữ liệu ra của câu lệnh vào tập tin. Dưới đây là một ví
dụ tương ứng:
maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt
Theo lệnh này danh sách tập tin và thư mục con của thư mục, mà từ đó người
dùng thực hiện lệnh ls
sẽ được ghi vào tập tin /home/maikhai/ls.txt; khi
này nếu tập tin ls.txt không tồn tại, thì nó sẽ được tạo ra; nếu tập tin đã có,
thì nội dung của nó sẽ bị xóa và ghi đè bởi danh sách nói trên. Nếu bạn không
muốn xóa nội dung cũ mà ghi thêm dữ liệu đầu ra vào cuối tập tin, thì cần sử
dụng ký hiệu >> thay cho >. Khi này khoảng trắng trước và sau các ký hiệu >
hay >> không có ý nghĩa và chỉ dùng với mục đích thuận tiện, dễ nhìn. Bạn có
thể chuyển hướng không chỉ vào tập tin, mà còn tới đầu vào của một câu lệnh
khác hay tới một thiết bị nào đó (ví dụ, máy in). Ví dụ, để đưa nội dung tập tin
/home/maikhai/ls.txt
vừa tạo ở trên tới cửa sổ terminal thứ hai
có thể sử
dụng lệnh sau:
maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2
Như bạn thấy, > dùng để chuyển hướng dữ liệu của đầu ra. Chức năng tương
tự đối với đầu vào được thực hiện bởi <. Ví dụ, có thể đếm số từ trong tập tin
ls.txt
như sau (chú ý, đây chỉ là một ví dụ minh họa, trên thực tế thường sử
dụng câu lệnh đơn giản hơn):
maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt
2
thư mục hiện thời
3
bạn cần dùng tổ hợp phím <Ctrl>+<Alt>+<F2> để chuyển tới cửa sổ terminal này và đăng nhập trước