Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách lưu đầu ra Terminal vào file trên Linux

Cách lưu đầu ra Terminal vào file trên Linux

Terminal là trái tim Linux. Mọi chương trình chạy dưới dòng lệnh terminal. Biết dùng terminal thành thạo là bước quan trọng hiểu hệ điều hành.

Khi làm việc trên terminal Linux, bạn có thể muốn lưu đầu ra (output) của lệnh vào file – để ghi log, dùng cho tác vụ khác. Bài viết giới thiệu 5 cách lưu đầu ra terminal vào file.

1. Dùng Terminal hỗ trợ lưu đầu ra

Terminal Konsole (KDE) có tùy chọn lưu đầu ra: menu File → Lưu đầu ra thành... (Save output as...). Chọn nơi lưu file.

Cách lưu đầu ra Terminal vào file trên Linux

GNOME Terminal: chuột phải terminal → Sao chép đầu ra dưới dạng HTML (Copy output as HTML) → dán vào trình soạn thảo.

Cách lưu đầu ra Terminal vào file trên Linux

2. Chuyển hướng đầu ra (Output Redirection)

Sử dụng toán tử shell UNIX tích hợp. 3 toán tử:

  • >: tạo hoặc ghi đè file với đầu ra chương trình. Dùng để lưu kết quả hiện tại vào cùng file.
  • >>: tạo file, ghi thêm (append) đầu ra, không ghi đè. Dùng ghi log liên tục.
  • 2>: toán tử đặc biệt in ra lỗi (stderr). Hữu ích debug – thấy lỗi trước khi crash.
Cách lưu đầu ra Terminal vào file trên Linux

Cách dùng: thêm toán tử cuối lệnh. Ví dụ:

echo "maketecheasier" > hello.txt

Lệnh echo xuất "maketecheasier", toán tử > ghi vào hello.txt thay vì in màn hình.

Cách lưu đầu ra Terminal vào file trên Linux

3. Lệnh tee

Chương trình GNU tee đọc/ghi standard input. Dùng với pipe (|) ghi đầu ra lệnh vào file.

echo "maketecheasier" | tee hello.txt
Cách lưu đầu ra Terminal vào file trên Linux

Lưu ý: Pipe lấy đầu ra chương trình này cho vào đầu vào chương trình kia – nối nhiều chương trình dùng standard input/output.

4. Lệnh script

script ghi lại tất cả gì bạn gõ và đầu ra trong phiên terminal. Dạng text có thể parse. Hữu ích gửi log lỗi xin hỗ trợ.

Chạy:

script filename.txt

Cách lưu đầu ra Terminal vào file trên Linux

Script ghi mọi thứ: nhấn phím, ký tự điều khiển (Tab, Backspace...). Ví dụ log:

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

Kết thúc: gõ exit. Script ghi toàn bộ log vào file.

Cách lưu đầu ra Terminal vào file trên Linux

5. Chụp framebuffer terminal

Lấy đầu ra từ framebuffer Linux. Dùng khi làm việc trực tiếp trên teletype (TTY) muốn chụp đầu ra chương trình.

cat /dev/fb0 > capture.raw
Cách lưu đầu ra Terminal vào file trên Linux

Lưu ý: chụp framebuffer thô (raw bytes) → cần trình chỉnh ảnh điều chỉnh màu/độ sâu bit. Tốn thời gian, dễ sai.

Giải pháp: dùng fbgrab – chụp màn hình TTY từ framebuffer lưu PPM/PNG.

Cài fbgrab:
Debian/Ubuntu:

sudo apt install fbgrab
Arch:
sudo pacman -S fbgrab

Cách lưu đầu ra Terminal vào file trên Linux

Dùng fbgrab chụp đầu ra terminal

Chuyển TTY: Ctrl+Shift+Alt+F3. Chạy fbcat hoặc fbgrab.

  • fbcat: đơn giản, lưu PPM (raw image). Dùng cho màn hình bit-depth thấp.
  • fbgrab: phức tạp hơn, hỗ trợ PNG mặc định, chọn TTY khác.

Chụp fbcat:

fbcat > capture.ppm

Cách lưu đầu ra Terminal vào file trên Linux

Chụp fbgrab (TTY thứ 3):

sudo fbgrab -c 3 capture.png

Cách lưu đầu ra Terminal vào file trên Linux

Xem thêm hướng dẫn gửi email từ dòng lệnh.

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

1. fbgrab không hoạt động, ảnh đen/trắng?

fbgrab dùng framebuffer device sai. Kiểm tra device hiện tại:

ls /dev
Tìm /dev/fbX. Thường là /dev/fb0. Nếu khác (ví dụ fb1), dùng:
fbgrab -d 1 capture.png

2. Có cách lấy nội dung file làm input cho chương trình không?

Có! Toán tử < kéo dữ liệu từ file làm input. Ví dụ:
[1] cat test.txt | program (dùng cat + pipe)
[2] program < test.txt (trực tiếp dùng <)

3. Ép script chỉ ghi đầu ra một lệnh?

Có:

script -c "your-command" test.txt
Cờ -c chạy chỉ lệnh chỉ định, ghi output vào test.txt.