Linux căn bản - Bài 11: Ống (piping) và điều hướng

Đây là bài 11 trong loạt bài “Linux căn bản”. Các bạn nên ghé qua nó một chút trước khi bắt đầu.

Giới thiệu

Nó là cái gì?

Mỗi chương trình chúng ta chạy trên dòng lệnh tự động có ba luồng dữ liệu kết nối đến nó.

  • STDIN (0) - Đầu vào chuẩn (dữ liệu đưa vào chương trình)
  • STDOUT (1) - Đầu ra chuẩn (dữ liệu được in ra bởi chương trình, mặc định in ra ở cửa sổ lệnh)
  • STDERR (2) - Lỗi chuẩn (đối với thông báo lỗi, cũng mặc định in ra ở cửa sổ lệnh)

Điều hướng đến một file

Bình thường, chúng ta sẽ nhận kết quả xuất ra trên màn hình, điều đó là tiện lợi cho hầu hết các trường hợp, nhưng thỉnh thoảng chúng ta muốn lưu nó trong một file để lưu trữ, làm đầu vào cho hệt thống khác hoặc gửi đến một ai đó. Toán tử lớn hơn (>) chỉ đến dòng lệnh mà chúng ta muốn chương trường xuất ra (hoặc là bất kì cái gì nó gửi đến STDOUT) để lưu trong một file thay vì in nó ra trên màn hình. Xem xét ví dụ sau:

1 user@bash: ls
2 barry.txt bob example.png firstfile foo1 video.mpeg
3 user@bash: ls > myoutput
4 user@bash: ls
5 barry.txt bob example.png firstfile foo1 myoutput video.mpeg
6 user@bash: cat myoutput
7 barry.txt
8 bob
9 example.png
10 firstfile
11 foo1
12 myoutput
13 video.mpeg
14 user@bash:

Bây giờ hãy xem xét chi tiết nó:

- Dòng 1 Chúng ta bắt đầu xem xét có gì ở thư mục hiện hành.
- Dòng 3 Bây giờ chúng ta sẽ vẫn chạy lệnh đó nhưng lần này chúng ta sử dụng dấu > để nói với cửa sổ lệnh là lưu thông tin xuất ra màn hình vào file myoutput. Bạn sẽ để ý rằng chúng ta không cần tạo file trước khi lưu nó. Cửa sổ lệnh sẽ tự động tạo nó nếu nó chưa tồn tại.
- Dòng 4 Như bạn có thể thấy, file mới của chúng ta đã được tạo ra.
- Dòng 6 Bây giờ chúng ta xem xét cái gì đã được lưu ở đó.

Một vài nhận xét được rút ra

Lưu ý bạn sẽ thấy ở ví dụ trên, kết quả xuất ra được lưu ở file là mỗi file trên một dòng thay vì tất cả một dòng như khi in ra trên màn hình. Lý do cho điều này là màn hình có chiều rộng biết trước và chương trình có thể định dạng kết quả xuất phù hợp với điều đó. Khi chúng ta điều hướng, có có thể là một file hoặc nó có thể ở đâu đó, vì vậy tùy chọn an toàn là định dạng nó một đầu vào trên một dòng. Điều này cũng cho phép chúng ta dễ dàng thao tác với dữ liệu sau này khi mà chúng ta đọc tiếp phần dưới của trang.

TIP: When piping and redirecting, the actual data will always be the same, but the formatting of that data may be slightly different to what is normally printed to the screen. Keep this in mind.

You’ll also notice that the file we created to save the data into is also in our listing. The way the mechanism works, the file is created first (if it does not exist already) and then the program is run and output saved into the file. Saving to an Existing File

If we redirect to a file which does not exist, it will be created automatically for us. If we save into a file which already exists, however, then it’s contents will be cleared, then the new output saved to it.

Lưu vào file hiện hữu

Dịch và giản lược theo:

https://ryanstutorials.net/linuxtutorial/piping.php