Khi bạn chạy một lệnh tại dấu nhắc bash, nó thường in đầu ra của lệnh đó trực tiếp đến thiết bị đầu cuối để bạn có thể đọc nó ngay lập tức. Nhưng bash cũng cho phép bạn “chuyển hướng” đầu ra của bất kỳ lệnh nào, lưu nó vào tệp văn bản để bạn có thể xem lại kết quả sau.
Tính năng này hoạt động trên mọi hệ điều hành, từ Linux và macOS đến môi trường bash dựa trên Ubuntu của Windows 10.
Tùy chọn một: Chỉ chuyển hướng đầu ra đến tệp
Để sử dụng chuyển hướng bash, bạn chạy một lệnh, chỉ định >
hoặc là >>
và sau đó cung cấp đường dẫn của tệp mà bạn muốn chuyển hướng đầu ra đến.
-
>
chuyển hướng đầu ra của một lệnh đến một tệp, thay thế nội dung hiện có của tệp. -
>>
chuyển hướng kết quả đầu ra của một lệnh tới một tệp, nối đầu ra với nội dung hiện có của tệp.
Về mặt kỹ thuật, điều này chuyển hướng “stdout” —đầu ra tiêu chuẩn, là màn hình — đến một tệp.
Đây là một ví dụ đơn giản. Các ls
lệnh liệt kê các tệp và thư mục trong thư mục hiện tại. Vì thế. khi bạn chạy lệnh sau, ls
sẽ liệt kê các tệp và thư mục trong thư mục hiện tại. Nhưng nó sẽ không in chúng ra màn hình — nó sẽ lưu chúng vào tệp bạn chỉ định.
ls > /path/to/file
Bạn không phải chỉ định đường dẫn đến tệp hiện có. Chỉ định bất kỳ đường dẫn hợp lệ nào và bash sẽ tạo một tệp tại vị trí đó.
Nếu bạn xem nội dung của tệp, bạn sẽ thấy ls
đầu ra của lệnh. Ví dụ, cat
lệnh in nội dung của tệp vào terminal:
cat /path/to/file
Nhớ cái gì đó
toán tử thay thế nội dung hiện có của tệp bằng đầu ra của lệnh. Nếu bạn muốn lưu kết quả đầu ra của nhiều lệnh vào một tệp duy nhất, bạn sẽ sử dụng >
thay vào đó. Ví dụ: lệnh sau sẽ nối thông tin hệ thống vào tệp bạn chỉ định:>>
uname -a >> /path/to/file
Nếu tệp chưa tồn tại, bash sẽ tạo tệp. Nếu không, bash sẽ để nguyên nội dung hiện có của tệp và nối đầu ra vào cuối tệp.
Khi bạn xem nội dung của tệp, bạn sẽ thấy kết quả của lệnh thứ hai của bạn được thêm vào cuối tệp:
Bạn có thể lặp lại quá trình này bao nhiêu lần tùy thích để tiếp tục kết xuất đầu ra ở cuối tệp.
Tùy chọn hai: In đầu ra bình thường và chuyển hướng nó thành một tệp
Bạn có thể không muốn chuyển hướng đầu ra với >
hoặc là >>
, vì bạn sẽ không thấy đầu ra của lệnh trong thiết bị đầu cuối. Đó là những gì tee
lệnh dành cho. Lệnh tee in đầu vào mà nó nhận được ra màn hình và lưu nó vào một tệp cùng một lúc.
Để chuyển đầu ra của một lệnh đến tee
, in nó ra màn hình của bạn và lưu nó vào một tệp, sử dụng cú pháp sau:
command | tee /path/to/file
Điều này sẽ thay thế bất kỳ thứ gì trong tệp bằng đầu ra của lệnh, giống như >
nhà điều hành.
Để chuyển đầu ra của một lệnh thành tee
, in ra màn hình của bạn và lưu nó vào một tệp, nhưng nối nó vào cuối tệp:
command | tee -a /path/to/file
Điều này sẽ nối đầu ra vào cuối tệp, giống như >>
nhà điều hành.
LIÊN QUAN: Hướng dẫn cho người mới bắt đầu về Shell Scripting: Khái niệm cơ bản
Bash shell bao gồm một số toán tử bổ sung, nâng cao thực hiện các chức năng tương tự. Chúng sẽ đặc biệt hữu ích nếu bạn đang viết các kịch bản bash. Tham khảo chương Chuyển hướng I / O trong Hướng dẫn lập kịch bản Bash Nâng cao để biết thêm thông tin chi tiết.