Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách lưu đầu ra đầu cuối vào tệp trong Linux

Cách lưu đầu ra đầu cuối vào tệp trong Linux

Thiết bị đầu cuối là trái tim của hệ thống Linux. Mọi chương trình chạy trong Linux đều chạy bên dưới dòng lệnh đầu cuối. Điều này bao gồm các chương trình lớn, chẳng hạn như trình duyệt web và thậm chí cả những chương trình đơn giản như trình soạn thảo văn bản. Do đó, có thể sử dụng đúng thiết bị đầu cuối là một bước quan trọng nếu bạn muốn hiểu cách hoạt động của hệ điều hành.

Cùng với đó, trong khi làm việc trên thiết bị đầu cuối Linux, bạn có thể muốn lưu kết quả đầu cuối của một lệnh vào một tệp. Tệp này có thể được sử dụng làm thông tin cho một hoạt động khác hoặc đơn giản là ghi nhật ký hoạt động của thiết bị đầu cuối. Bài viết này hướng dẫn năm cách để lưu kết quả đầu cuối vào một tệp.

1. Sử dụng các thiết bị đầu cuối cụ thể

Cách đầu tiên để giải quyết vấn đề này là sử dụng Terminal hỗ trợ lưu kết quả đầu ra vào một tệp. Ví dụ:thiết bị đầu cuối Konsole đi kèm với cài đặt KDE tiêu chuẩn bao gồm tùy chọn để ghi đầu ra vào tệp.

Để làm điều đó, hãy nhấn nút “Tệp” trên thanh menu và nhấp vào “Lưu đầu ra dưới dạng…“

Cách lưu đầu ra đầu cuối vào tệp trong Linux

Thao tác này sẽ mở ra một hộp thoại cửa sổ nơi bạn có thể lưu đầu ra của thiết bị đầu cuối. Từ đó, bạn có thể chọn nơi bạn muốn lưu tệp.

Bạn cũng có thể lưu kết quả đầu ra của một lệnh trong thiết bị đầu cuối GNOME. Chỉ cần nhấp chuột phải vào thiết bị đầu cuối và nhấn “Sao chép đầu ra dưới dạng HTML.” Sau đó, điều này sẽ tải văn bản đầu cuối vào khay nhớ tạm của bạn. Từ đó, bạn có thể dán nó vào bất kỳ trình soạn thảo văn bản nào.

Cách lưu đầu ra đầu cuối vào tệp trong Linux

2. Chuyển hướng đầu ra

Một cách khác để giải quyết vấn đề này là sử dụng các toán tử cài sẵn của UNIX shell. Đây là các chức năng mặc định trong Linux và có thể chuyển hướng đầu ra văn bản của chương trình thành một tệp. Có ba toán tử có thể làm điều đó:

  • > toán tử sẽ tạo hoặc thay thế nội dung của tệp bằng đầu ra của chương trình của bạn. Điều này rất hữu ích nếu bạn muốn kết xuất và xem kết quả hiện tại của chương trình vào cùng một tệp.
  • >> nhà điều hành cũng sẽ tạo một tệp với đầu ra của chương trình của bạn. Tuy nhiên, toán tử này sẽ chỉ nối đầu ra thay vì thay thế nó. Điều này rất hữu ích nếu bạn muốn kết xuất liên tục kết quả chương trình của mình vào một tệp duy nhất.
  • Cuối cùng, 2> toán tử là một loại toán tử đặc biệt sẽ in ra các lỗi sẽ được thông báo lại. Điều này rất hữu ích trong quá trình gỡ lỗi, vì nó cho thấy sự cố mà chương trình gặp phải trước khi nó gặp sự cố.
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Biết rằng, cách bạn sử dụng các toán tử này là thêm nó vào cuối chương trình của bạn. Hãy xem xét ví dụ sau:

echo "maketecheasier" > hello.txt

Tôi đã hướng dẫn echo chương trình để xuất ra từ “maketecheasier”, sau đó thêm > toán tử cũng như tên tệp. Điều này yêu cầu trình bao UNIX ghi kết quả đầu ra vào tệp “hello.txt” thay vì in nó ra màn hình.

Cách lưu đầu ra đầu cuối vào tệp trong Linux

3. Tee

Ngoài chuyển hướng đầu ra, bạn cũng có thể lưu đầu ra của lệnh đầu cuối bằng cách sử dụng chương trình có tên tee . Đây là một chương trình GNU cho phép bạn đọc và ghi vào đầu vào chuẩn. Sử dụng chương trình này với các đường ống UNIX để ghi đầu ra của một lệnh vào một tệp.

Hãy xem xét ví dụ sau:

echo "maketecheasier" | tee hello.txt
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Ở đây, thay vì sử dụng chuyển hướng đầu ra, tôi đã chuyển hướng (| ) đầu ra cho tee .

Lưu ý :Một đường ống lấy đầu ra của một chương trình và đưa nó vào đầu vào của chương trình khác. Điều này cho phép bạn kết hợp nhiều chương trình lại với nhau, miễn là tất cả chúng đều sử dụng đầu vào và đầu ra tiêu chuẩn.

4. Tập lệnh

Một cách khác để kéo đầu ra từ thiết bị đầu cuối là thông qua script , một chương trình Linux cài sẵn ghi lại mọi thứ bạn nhập vào thiết bị đầu cuối cũng như đầu ra của nó.

Bạn có thể sử dụng tập lệnh để ghi lại nhật ký của phiên đầu cuối của mình ở định dạng văn bản có thể phân tích cú pháp. Điều này rất hữu ích nếu bạn muốn gửi nhật ký lỗi trực tuyến để nhận được sự hỗ trợ từ những người khác.

Để sử dụng nó, hãy chạy lệnh sau:

script filename.txt
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Thao tác này sẽ bắt đầu một môi trường tập lệnh, nơi bạn có thể bắt đầu chạy các lệnh. Tuy nhiên, một điều quan trọng cần lưu ý là script nắm bắt mọi thứ bạn làm trong phiên đó. Hãy xem xét ví dụ sau:

Script started on 2022-03-27 18:02:29+08:00 [TERM="rxvt-unicode-256color" TTY="/dev/pts/2" COLUMNS="77" LINES="22"]
[?2004h[ balaraw:~ ]$ ls
[?2004l
Desktop    Downloads  mail  News  pods  [01;34mdocuments  hello.txt  Mail  pics  tmp   vids
[?2004h[ balaraw:~ ]$ exit
[?2004l
exit
 
Script done on 2022-03-27 18:03:19+08:00 [COMMAND_EXIT_CODE="0"]

Tập lệnh bao gồm tất cả các lần nhấn phím và ký tự điều khiển mà bạn nhấn. Trong trường hợp của tôi, nó bao gồm tất cả các phím "ẩn" mà tôi đã nhấn, bao gồm cả Tab Backspace các phím bấm.

Khi bạn đã hoàn tất phiên, hãy nhập exit . Thao tác này sẽ kết thúc chương trình Tập lệnh và ghi toàn bộ nhật ký vào tệp bạn đã chỉ định.

Cách lưu đầu ra đầu cuối vào tệp trong Linux

5. Chụp đầu cuối bộ đệm khung

Cuối cùng, bạn cũng có thể lấy đầu ra của thiết bị đầu cuối bằng cách kéo từ bộ đệm khung Linux. Điều này rất hữu ích nếu bạn đang làm việc trực tiếp trên teletype và muốn nắm bắt đầu ra của một chương trình.

Để chụp thiết bị bộ đệm khung, hãy chạy lệnh sau khi ở trong teletype:

cat /dev/fb0 > capture.raw
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Một điều quan trọng cần lưu ý là chụp thiết bị bộ đệm khung theo cách này có nghĩa là bạn đang kết xuất các byte thô của bộ đệm khung vào một tệp. Để xem tệp đó, bạn cần tải tệp đó vào trình chỉnh sửa hình ảnh và điều chỉnh màu sắc và độ sâu bit theo cách thủ công. Quá trình này không chỉ tốn thời gian mà còn rất dễ làm sai.

Do đó, một cách để giải quyết vấn đề này là sử dụng chương trình của bên thứ ba, chẳng hạn như fbgrab. Thao tác này sẽ lấy màn hình teletype hiện tại từ thiết bị bộ đệm khung và đưa nó vào tệp PPM hoặc PNG.

Việc cài đặt fbgrab cũng tương đối đơn giản. Trong các bản phân phối dựa trên Debian và Ubuntu, bạn có thể sử dụng apt:

sudo apt install fbgrab

Đối với Arch Linux, hãy chạy pacman:

sudo pacman -S fbgrab
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Sử dụng fbgrab để nắm bắt đầu ra đầu cuối

Sau khi được cài đặt, hãy thả xuống teletype bằng cách nhấn Control + Shift + Alt + F3 , sau đó chạy fbcat hoặc fbgrab .

Fbcat là một chương trình đơn giản hơn lấy màn hình bộ đệm khung hiện tại và lưu nó vào một hình ảnh PPM. Đây là định dạng hình ảnh thô cấp thấp mà bạn có thể tải trong trình chỉnh sửa hình ảnh để chuyển đổi sang PNG. Fbcat chủ yếu hữu ích nếu bạn đang cố chụp một màn hình có độ sâu bit thấp hơn yêu cầu định dạng ảnh thô để chụp đúng cách.

Để chụp bằng chương trình fbcat, hãy chạy lệnh sau:

fbcat > capture.ppm
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Thao tác này sẽ lấy màn hình đang hiển thị và kết xuất nội dung trong tệp capture.ppm.

Mặt khác, Fbgrab là một chương trình phức tạp hơn được thiết kế để chụp các màn hình có độ sâu bit cao hơn. Phần lớn, bạn sẽ sử dụng nó để chụp màn hình teletype của mình. Nó hỗ trợ lưu vào PNG theo mặc định và có tùy chọn để chọn một loại teletype khác để chụp.

Để chụp bằng chương trình fbgrab, hãy chạy lệnh sau:

sudo fbgrab -c 3 capture.png
Cách lưu đầu ra đầu cuối vào tệp trong Linux

Thao tác này sẽ lấy màn hình teletype thứ ba và lưu vào tệp capture.png.

Nếu bạn đang tìm kiếm thêm hướng dẫn cho thiết bị đầu cuối Linux, hãy xem phần thảo luận về việc gửi email từ dòng lệnh.

Câu hỏi Thường gặp

1. Giúp đỡ! Fbgrab không hoạt động; bức tranh chỉ có màu đen hoặc trống.

Điều này có thể là do fbgrab đang sử dụng một thiết bị bộ đệm khung khác để ghi lại kết quả đầu cuối. Kiểm tra thiết bị bộ đệm khung hiện tại mà hệ thống đang sử dụng bằng cách liệt kê thư mục “/ dev”.

ls /dev

Từ đó, hãy tìm thiết bị “/ dev / fbX”. Thông thường, Linux sử dụng “/ dev / fb0” cho bộ đệm khung của nó. Tuy nhiên, nếu hệ thống của bạn đang sử dụng bộ đệm khung khác, chẳng hạn như “/ dev / fb1”, bạn có thể chuyển lệnh sau để yêu cầu fbgrab kéo từ bộ đệm khung đó thay thế:

fbgrab -d 1 capture.png

2. Có thể lấy nội dung của tệp mà tôi đã viết làm đầu vào cho chương trình không?

Đúng! Ngoài ba toán tử được thảo luận ở trên, bạn cũng có thể sử dụng < toán tử để lấy dữ liệu từ một tệp. Sau đó, shell sẽ coi đây là đầu vào cho một chương trình.

Làm theo cách này cũng giúp bạn không cần phải dựa vào các chương trình khác để in văn bản. Hãy xem xét các ví dụ sau:

[1] cat test.txt | program
[2] program < test.txt
  • Ví dụ đầu tiên gọi chương trình cat để tải văn bản, sau đó tải toán tử đường ống với đầu ra là cat và chuyển nó đến chương trình của bạn.
  • Mặt khác, ví dụ thứ hai ngay lập tức gọi chương trình của bạn, sau đó chọn < toán tử, xử lý đối số tiếp theo của nó làm đầu vào của nó.

3. Có cách nào để buộc tập lệnh chỉ nắm bắt đầu ra của một lệnh không?

Có, có thể chỉ tập lệnh cho một lệnh duy nhất. Điều này rất hữu ích trong quá trình khắc phục sự cố khi bạn chỉ muốn ghi lại kết quả đầu ra của một chương trình duy nhất. Thực hiện việc này bằng cách chạy lệnh sau:

script -c "your-command" test.txt

-c cờ ra lệnh cho chương trình script chỉ chạy chương trình:your-command. Từ đó, nó sẽ ghi đầu ra của nó trong một tệp văn bản có tên là test.txt.