BlogTổng Hợp Lệnh Xem Lịch Sử — Ubuntu & macOS
Bố cục bài viết
Trang này
Ngày tạo
29/07/2026
Cập nhật
Lượt xem
8
Đọc
4m
Tổng Hợp Lệnh Xem Lịch Sử — Ubuntu & macOS
Hầu hết các lệnh đều ở cấp độ shell (zsh/bash), nên dùng giống nhau trên cả Ubuntu và macOS trừ khi có ghi chú riêng.
Xem history cơ bản
| Lệnh | Shell | Chức năng |
|---|---|---|
history | bash | Liệt kê history trong buffer phiên hiện tại |
history 1 | zsh | Liệt kê toàn bộ history đã load (bắt đầu từ event 1) |
history 10 | zsh | 10 dòng gần nhất |
history -i 1 | zsh | Toàn bộ history kèm timestamp chuẩn ISO |
history \| head -20 | cả 2 | 20 dòng đầu tiên |
history \| tail -20 | cả 2 | 20 dòng cuối cùng |
fc -l 1 | cả 2 (POSIX) | Liệt kê toàn bộ history qua lệnh fc có sẵn |
Đọc trực tiếp file history (dùng được ngay cả khi không ở trong phiên terminal)
cat ~/.zsh_history # zsh
cat ~/.bash_history # bash
tail -50 ~/.zsh_history # 50 dòng gần nhất
Lưu ý: khi bật EXTENDED_HISTORY, file .zsh_history lưu dạng : 1699999999:0;command, nên cat thô sẽ hơi khó đọc — dùng mẹo in đẹp bên dưới.
Tìm kiếm trong history
history | grep "ssh" # tìm tất cả lệnh ssh đã từng chạy
grep "docker" ~/.zsh_history # tìm trực tiếp trong file
Ctrl+R # tìm kiếm ngược tương tác (cả 2 shell)
Thống kê / phân tích tần suất sử dụng
Top 20 lệnh dùng nhiều nhất:
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -20
(Ở zsh khi bật timestamp, lệnh sẽ bắt đầu từ $4 thay vì $2 — điều chỉnh nếu kết quả không đúng.)
Các lệnh đã chạy hôm nay:
history | grep "$(date +%Y-%m-%d)"
In đẹp history mở rộng của zsh (bỏ timestamp cho dễ đọc)
fc -li 1 | less
Xóa / quản lý history
history -c # xóa history phiên hiện tại (bash)
history -p # purge history phiên hiện tại (zsh)
> ~/.zsh_history # xóa sạch file history trên đĩa (cẩn thận!)
history -d 1234 # xóa entry số 1234 (bash)
Chạy lại lệnh cũ nhanh
!! # chạy lại lệnh vừa gõ trước đó
!123 # chạy lại lệnh có số thứ tự 123 trong history
!ssh # chạy lại lệnh gần nhất bắt đầu bằng "ssh"
!ssh:p # in ra lệnh đó nhưng KHÔNG chạy (an toàn để kiểm tra trước)
sudo !! # chạy lại lệnh vừa rồi nhưng thêm sudo (rất hay dùng)
Sửa và chạy lại lệnh cũ (bash/zsh)
^old^new # thay "old" thành "new" trong lệnh gần nhất rồi chạy lại
fc # mở lệnh gần nhất trong editor để sửa rồi chạy
Bỏ qua không lưu 1 lệnh vào history
command_here # thêm 1 khoảng trắng ở đầu dòng (cần bật HIST_IGNORE_SPACE ở zsh)
Loại bỏ lệnh trùng lặp trong history (tùy chọn của zsh)
setopt HIST_IGNORE_DUPS # bỏ qua nếu trùng với lệnh liền trước
setopt HIST_IGNORE_ALL_DUPS # xóa bản cũ nếu có bản trùng mới hơn
setopt HIST_FIND_NO_DUPS # khi search (Ctrl+R) không hiện trùng lặp
setopt HIST_SAVE_NO_DUPS # không lưu bản trùng vào file
Chia sẻ history real-time giữa nhiều terminal đang mở (zsh)
setopt SHARE_HISTORY
Tìm kiếm history dạng fuzzy với fzf (công cụ ngoài, nên cài thêm)
brew install fzf # macOS
sudo apt install fzf # Ubuntu
# Sau khi cài, Ctrl+R sẽ nâng cấp thành tìm kiếm fuzzy trực quan hơn nhiều
Kiểm tra cấu hình history hiện tại
echo $HISTSIZE
echo $SAVEHIST # chỉ có ở zsh
echo $HISTFILE
set -o | grep hist # bash: hiện các option liên quan đến history
Audit toàn hệ thống (không chỉ shell của bạn) — dùng cho forensics/security
sudo apt install auditd # Ubuntu
sudo ausearch -k history # tìm theo rule key đã định nghĩa
sudo aureport --executable # báo cáo tổng hợp lệnh đã thực thi toàn hệ thống
Cái này khác history ở chỗ nó ghi lại lệnh của mọi user, kể cả khi họ xóa .bash_history của họ — hữu ích nếu cần audit cho mục đích bảo mật/forensics thay vì chỉ xem lại lệnh của chính mình.
Lưu ý riêng cho Ubuntu
Ubuntu mặc định dùng bash (khác với macOS đã chuyển sang zsh mặc định từ bản Catalina), nên .bash_history là file chính trên Ubuntu trừ khi đã đổi shell. Nếu sudo apt install zsh và chuyển sang zsh, các lệnh zsh ở trên áp dụng y hệt.