<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.
<Trước | Nội dung | Tiếp theo>