Sunday, January 19, 2025

Linux I/O Redirection

-

Điều hướng (Redirection) trong Linux có thể được định nghĩa là thay đổi cách mà các lệnh đọc đầu vào và gửi đầu ra. Bạn có thể điều hướng đầu vào và đầu ra của một lệnh.

Để điều hướng, ta sử dụng các ký tự đặc biệt. Việc điều hướng có thể đến một file (các ký tự đặc biệt của shell là dấu ngoặc nhọn ‘<‘, ‘>’) hoặc một chương trình (các ký tự đặc biệt của shell là ký tự đường ống ‘|’).

Trong điều hướng I/O, shell bash có ba luồng chuẩn:

  • đầu vào chuẩn (stdin): Luồng đầu vào chuẩn được đánh số là stdin (0). Shell bash lấy đầu vào từ stdin. Mặc định, bàn phím được sử dụng làm đầu vào.
  • đầu ra chuẩn (stdout): Luồng đầu ra chuẩn được đánh số là stdout (1). Shell bash gửi đầu ra tới stdout. Đầu ra được gửi đến màn hình.
  • lỗi chuẩn (stderr): Luồng lỗi chuẩn được đánh số là stderr (2). Shell bash gửi thông báo lỗi tới stderr. Thông báo lỗi được gửi đến màn hình.

Chuyển hướng vào một file
Mỗi stream sử dụng các lệnh chuyển hướng. Dấu ngoặc nhọn đơn ‘>’ hoặc dấu ngoặc nhọn kép ‘>>’ có thể được sử dụng để chuyển hướng đầu ra tiêu chuẩn. Nếu file mục tiêu không tồn tại, một file mới có cùng tên sẽ được tạo ra.

Ghi đè

Các lệnh có dấu ngoặc nhọn đơn ‘>’ sẽ ghi đè nội dung file hiện có.

  • : đầu ra tiêu chuẩn
  • < : đầu vào tiêu chuẩn
  • 2> : lỗi tiêu chuẩn

Lưu ý: Viết ‘1>’ hoặc ‘>’ và ‘0<‘ hoặc ‘<‘ là điều tương tự. Nhưng đối với stderr bạn phải viết ‘2>’.

Cú pháp:

cat > <fileName> 

Lệnh cat > <fileName> sẽ đọc dữ liệu từ standard input (stdin) và ghi đè (overwrite) nó vào file có tên <fileName>. Nếu file không tồn tại, lệnh sẽ tạo ra file mới. Khi chạy lệnh này, bạn sẽ thấy con trỏ chuột chuyển thành dấu nhắc lệnh >. Bây giờ, bạn có thể nhập dữ liệu và nhấn Ctrl + D để kết thúc quá trình nhập dữ liệu và ghi nó vào file <fileName>.

Ví dụ: để tạo file có tên là test.txt và ghi nội dung vào file đó, ta sử dụng lệnh cat > test.txt. Sau đó nhập nội dung và nhấn Ctrl + D để lưu file.

Lưu ý: Lệnh cat là một lệnh dùng để hiển thị nội dung của file trên màn hình và > là dấu hiệu cho phép đưa nội dung từ standard input (stdin) vào file.

Append (thêm nội dung)

Trong I/O Redirection, dấu ‘>>’ được sử dụng để đưa output của một command vào một file mà không ghi đè nội dung đã có của file đó. Nếu file đó chưa tồn tại thì nó sẽ được tạo ra mới.

Có thể sử dụng ‘<<‘ để đưa input từ một file vào một command. Trong khi đó, ‘2>>’ được sử dụng để đưa error message của command vào một file mà không ghi đè nội dung đã có của file đó.

Chuyển hướng tới chương trình nào đó

Pipe là một cách redirect stream từ một chương trình sang chương trình khác. Khi pipe được sử dụng để gửi standard output của một chương trình sang chương trình khác, dữ liệu của chương trình đầu tiên sẽ không được hiển thị trên terminal, chỉ có dữ liệu của chương trình thứ hai mới được hiển thị.

Mặc dù chức năng của pipe có vẻ giống với ‘>’ và ‘>>’, nhưng nó có sự khác biệt đáng kể. Pipe redirect dữ liệu từ một chương trình sang chương trình khác trong khi các dấu ngoặc chỉ được sử dụng trong redirection của các file. Ví dụ:

ls *.txt | cat > txtFile  

Lệnh trên có chức năng đọc danh sách các file có đuôi là .txt trong thư mục hiện tại bằng lệnh ls *.txt và chuyển dữ liệu của danh sách file này sang lệnh tiếp theo bằng dấu | (pipe). Lệnh tiếp theo là cat > txtFile có chức năng ghi dữ liệu từ chuẩn đầu ra (standard output) của lệnh trước đó vào file txtFile.

Tóm lại, lệnh trên có chức năng chọn tất cả các file có đuôi là .txt trong thư mục hiện tại và ghi tên các file này vào file txtFile.

Previous article
Next article

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories