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.
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.
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 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.
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
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
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.
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
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 fbgrabArch:
sudo pacman -S fbgrab
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
Chụp fbgrab (TTY thứ 3):
sudo fbgrab -c 3 capture.png
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 /devTì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.txtCờ -c chạy chỉ lệnh chỉ định, ghi output vào test.txt.