Skip to content
LIVE FEED

BlogTổng Hợp Lệnh Xem Lịch Sử — Ubuntu & macOS

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ệnhShellChức năng
historybashLiệt kê history trong buffer phiên hiện tại
history 1zshLiệt kê toàn bộ history đã load (bắt đầu từ event 1)
history 10zsh10 dòng gần nhất
history -i 1zshToàn bộ history kèm timestamp chuẩn ISO
history \| head -20cả 220 dòng đầu tiên
history \| tail -20cả 220 dòng cuối cùng
fc -l 1cả 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.

Contact
Facebook
TOP