OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Chuyển hướng đầu ra tiêu chuẩn

Chuyển hướng I / O cho phép chúng tôi xác định lại đầu ra tiêu chuẩn đi đến đâu. Để chuyển hướng đầu ra tiêu chuẩn đến một tệp khác thay vì màn hình, chúng tôi sử dụng toán tử chuyển hướng “>” theo sau là tên của tệp. Tại sao chúng tôi muốn làm điều này? Nó thường hữu ích để lưu trữ đầu ra của một lệnh trong một tệp. Ví dụ: chúng ta có thể yêu cầu trình bao gửi đầu ra của ls lệnh vào tệp ls-output.txt thay vì màn hình:


[tôi @ linuxbox ~] $ ls -l / usr / bin> ls-output.txt

[tôi @ linuxbox ~] $ ls -l / usr / bin> ls-output.txt


Ở đây, chúng tôi đã tạo một danh sách dài về / usr / bin thư mục và gửi kết quả đến tệp

ls-output.txt. Hãy kiểm tra đầu ra được chuyển hướng của lệnh:


[tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 167878 2016-02-01 15:07 ls-output.txt

[tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 167878 2016-02-01 15:07 ls-output.txt


Tốt; một tệp văn bản lớn, đẹp. Nếu chúng ta xem tệp với ít, chúng ta sẽ thấy rằng tệp

ls-output.txt thực sự chứa các kết quả từ lệnh ls của chúng tôi:


[tôi @ linuxbox ~] $ ít ls-output.txt

[tôi @ linuxbox ~] $ ít ls-output.txt


Bây giờ, chúng ta hãy lặp lại kiểm tra chuyển hướng của chúng tôi, nhưng lần này với một bước ngoặt. Chúng tôi sẽ thay đổi tên của thư mục thành một tên không tồn tại:



[tôi @ linuxbox ~] $ ls -l / bin / usr> ls-output.txt

ls: không thể truy cập / bin / usr: Không có tệp hoặc thư mục như vậy

[tôi @ linuxbox ~] $ ls -l / bin / usr> ls-output.txt

ls: không thể truy cập / bin / usr: Không có tệp hoặc thư mục như vậy


Chúng tôi đã nhận được một thông báo lỗi. Điều này có ý nghĩa vì chúng tôi đã chỉ định điều khoản không tồn tại / bin / usr, nhưng tại sao thông báo lỗi lại hiển thị trên màn hình thay vì được chuyển hướng đến tệp ls-output.txt? Câu trả lời là ls chương trình không gửi thông báo lỗi của nó đến đầu ra tiêu chuẩn. Thay vào đó, giống như hầu hết các chương trình Unix được viết tốt, nó sẽ gửi các thông báo lỗi của nó đến lỗi chuẩn. Vì chúng tôi chỉ chuyển hướng đầu ra tiêu chuẩn chứ không phải lỗi tiêu chuẩn nên thông báo lỗi vẫn được gửi đến màn hình. Chúng tôi sẽ xem làm thế nào

Chuyển hướng đầu ra tiêu chuẩn


để chuyển hướng lỗi chuẩn chỉ trong một phút, nhưng trước tiên, hãy xem điều gì đã xảy ra với tệp lỗi của chúng tôi:



[tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 0 2016-02-01 15:08 ls-output.txt

[tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 0 2016-02-01 15:08 ls-output.txt


Tệp bây giờ có độ dài bằng XNUMX! Điều này là do, khi chúng ta chuyển hướng đầu ra bằng toán tử chuyển hướng “>”, tệp đích luôn được viết lại từ đầu. Kể từ khi của chúng tôi ls lệnh không tạo ra kết quả và chỉ có một thông báo lỗi, hoạt động chuyển hướng bắt đầu ghi lại tệp và sau đó dừng lại do lỗi, dẫn đến việc cắt ngắn tệp. Trên thực tế, nếu chúng ta cần thực sự cắt bớt một tệp (hoặc tạo một tệp mới, trống), chúng ta có thể sử dụng một thủ thuật như sau:



[tôi @ linuxbox ~] $ > ls-output.txt

[tôi @ linuxbox ~] $ > ls-output.txt


Chỉ cần sử dụng toán tử chuyển hướng không có lệnh trước nó sẽ cắt bớt một tệp hiện có hoặc tạo một tệp mới, trống.

Vì vậy, làm thế nào chúng ta có thể nối đầu ra được chuyển hướng vào một tệp thay vì ghi đè tệp ngay từ đầu? Vì vậy, chúng tôi sử dụng toán tử chuyển hướng “>>”, như sau:



[tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt

[tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt


Sử dụng toán tử “>>” sẽ dẫn đến kết quả đầu ra được nối vào tệp. Nếu tệp chưa tồn tại, nó được tạo giống như khi toán tử “>” đã được sử dụng. Hãy thử nghiệm nó:



[tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 503634 2016-02-01 15:45 ls-output.txt

[tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [tôi @ linuxbox ~] $ ls -l ls-output.txt

-rw-rw-r-- 1 tôi tôi 503634 2016-02-01 15:45 ls-output.txt


Chúng tôi lặp lại lệnh ba lần dẫn đến một tệp đầu ra lớn gấp ba lần.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: