điều hướng đầu vào và đầu ra trong linux
-chuyển hướng là 1 tính năng quan trọng trong thực hiện lệnh, bạn có thể thay đổi các thiết bị đầu vào đầu ra tiêu chuẩn, quy trình...
-chuyển hướng là 1 tính năng quan trọng trong thực hiện lệnh, bạn có thể thay đổi các thiết bị đầu vào đầu ra tiêu chuẩn, quy trình làm việc của bất kì 1 lệnh linux nào là nhận 1 đầu vào và đưa ra 1 đầu ra
+thiết bị đầu vào tiêu chuẩn(stdin) là bàn phím
+thiết bị đầu ra tiêu chuẩn là màn hình
+thiết bị đầu vào tiêu chuẩn(stdin) là bàn phím
+thiết bị đầu ra tiêu chuẩn là màn hình
- Mỗi tệp trong Linux có một Bộ mô tả tệp tương ứng được liên kết với nó
- Bàn phím là thiết bị đầu vào tiêu chuẩn trong khi màn hình của bạn là thiết bị đầu ra tiêu chuẩn
- ">" là toán tử chuyển hướng đầu ra. ">>" nối thêm đầu ra vào một tệp hiện có
- "<" là toán tử chuyển hướng đầu vào
- "> &" điều hướng lại đầu ra của tệp này sang tệp khác.
- Bạn có thể định hướng lại lỗi bằng cách sử dụng Trình mô tả tệp 2 tương ứng.
để chuyển hướng đầu vào đầu ra diễn ra, chuỗi lệnh đầu vào phải được cung cấp cú pháp cho chính lệnh đó và xem tệp đầu vào đầu ra là gì, trước tiên tệp phải được mở và bộ mô tả tệp của nó phải sao chép, bằng cách gọi lệnh hệ thống dup()
đọc từ tập tin hoặc stdin
muốn biết cách kiểm tra mạnh nhất/ nhanh nhất xem stdin có tồn tại hay không(dữ liệu đang được dẫn đến chương trình) và đọc dữ liệu đó. nếu không tồn tại quá trình xử lý sẽ diễn ra trên tệp được. stdin là luồng lưu thông tin chứ không phải là 1 tệp thực tế
Stdin - Stdout - Stderr trong linux
điều hướng vào ra trên hệ thống Unix là nền móng cho rất nhiều việc bạn có thể làm được rên hệ thống Linux, tất cả các chương trình đều mở ra 3 tệp tin khi chúng được gọi bởi hệ vỏ (Shell).
1. Đầu vào chuẩn hay còn gọi là stdin.
Đây là nơi mà dữ liệu được nhập vào, và thường là thiết bị cuối (terminal). Để tìm ra thiết bị nào là terminal, hãy xem lệnh "man 1 tty".
Bạn có thể tạo ra một tệp tin chứa các lệnh, và chuyển nó cho lệnh.
Ví dụ: Bạn có thể chuyển nội dung của tệp tin cho lệnh "grep" như sau:
$grep root < /path/to/some/file # hiển thị các dòng chứa từ root trong tệp tin.
Tất nhiên là bạn có thể không cần phải làm như vậy với bài toán này vì lệnh "grep" chấp nhận đối số là tên một tệp tin. Lệnh phía trên sẽ lấy nội dung của tệp tin đã chỉ ra để làm dữ liệu đầu vào cho lệnh "grep".
Đây là nơi mà dữ liệu được nhập vào, và thường là thiết bị cuối (terminal). Để tìm ra thiết bị nào là terminal, hãy xem lệnh "man 1 tty".
Bạn có thể tạo ra một tệp tin chứa các lệnh, và chuyển nó cho lệnh.
Ví dụ: Bạn có thể chuyển nội dung của tệp tin cho lệnh "grep" như sau:
$grep root < /path/to/some/file # hiển thị các dòng chứa từ root trong tệp tin.
Tất nhiên là bạn có thể không cần phải làm như vậy với bài toán này vì lệnh "grep" chấp nhận đối số là tên một tệp tin. Lệnh phía trên sẽ lấy nội dung của tệp tin đã chỉ ra để làm dữ liệu đầu vào cho lệnh "grep".
2. Đầu ra chuẩn, hay còn gọi là stdout.
Đây là nơi chương trình xuất dữ liệu ra. Nó cũng thương là thiết bị cuối (terminal), nhưng bạn có thể chuyển hướng nó.
Bạn chuyển hướng nó bằng dấu ">".
Ví dụ bạn muốn lệnh "echo" kết xuất dữ liệu ra một tệp tin, thế thì làm như sau:
$echo "Hello" > hello.txt # hello.txt sẽ có nội dung là "Hello".
3. Báo lỗi chuẩn, hay stderr.
Là nơi các chương trình báo lỗi, cũng giống như ở trên, nó thường là thiết bị cuối (terminal), và cũng có thể chuyển hướng.
Nếu bạn là người lập trình C, bạn sẽ thấy stdin, stdout và stderr rất quen thuộc. Ba luồng kết xuất này thường được mở tự động khi lập trình để người dùng sử dụng, dùng hàm fwrite hay fread chẳng hạn. Ba luồng kết xuất này được hiểu là các tệp tin và nó có fd của nó: stdin là 0, stdout là 1 và stderr là 2.
Sau đây là một số ký hiệu bạn có thể dùng để chuyển hướng vào ra:
Đây là nơi chương trình xuất dữ liệu ra. Nó cũng thương là thiết bị cuối (terminal), nhưng bạn có thể chuyển hướng nó.
Bạn chuyển hướng nó bằng dấu ">".
Ví dụ bạn muốn lệnh "echo" kết xuất dữ liệu ra một tệp tin, thế thì làm như sau:
$echo "Hello" > hello.txt # hello.txt sẽ có nội dung là "Hello".
3. Báo lỗi chuẩn, hay stderr.
Là nơi các chương trình báo lỗi, cũng giống như ở trên, nó thường là thiết bị cuối (terminal), và cũng có thể chuyển hướng.
Nếu bạn là người lập trình C, bạn sẽ thấy stdin, stdout và stderr rất quen thuộc. Ba luồng kết xuất này thường được mở tự động khi lập trình để người dùng sử dụng, dùng hàm fwrite hay fread chẳng hạn. Ba luồng kết xuất này được hiểu là các tệp tin và nó có fd của nó: stdin là 0, stdout là 1 và stderr là 2.
Sau đây là một số ký hiệu bạn có thể dùng để chuyển hướng vào ra:
stdin ,stdout , stderr , stdpn , bộ nhớ đệm là gì ....
các bạn cho mình hỏi chút ... stdin ,stdout , stderr , stdpn , bộ nhớ đệm là gì ? theo giải thích thì nó thế này ... http://nl3.upanh.com/b6.s27.d1/41c796c366e287f80f76d24da7b2994b_43746043.untitled.jpg nhưng mình vẫn chưa hiểu cách thức hoạt động của nó thế nào .... có thể giải thích giúp mình cách hoạt động của chúng được không ? (Nếu có tài liệu thì hay qua...:(|) . thanks !!!!diendan.congdongcviet.com
các bạn cho mình hỏi chút ... stdin ,stdout , stderr , stdpn , bộ nhớ đệm là gì ? theo giải thích thì nó thế này ... http://nl3.upanh.com/b6.s27.d1/41c796c366e287f80f76d24da7b2994b_43746043.untitled.jpg nhưng mình vẫn chưa hiểu cách thức hoạt động của nó thế nào .... có thể giải thích giúp mình cách hoạt động của chúng được không ? (Nếu có tài liệu thì hay qua...:(|) . thanks !!!!diendan.congdongcviet.com

Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất