Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh history Linux chi tiết, đầy đủ

    Nguyễn Hưng

    Ngày đăng:

    06/01/2026

    Cập nhật lần cuối:

    06/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    06/01/2026

    Cập nhật lần cuối:

    06/01/2026

    Mục lục

    Lệnh history Linux là một lệnh dòng lệnh trong hệ điều hành Linux và Unix, dùng để liệt kê lại danh sách các lệnh mà người dùng đã từng nhập vào terminal trong quá trình làm việc. Trong bài viết này, mình sẽ cùng bạn tìm hiểu về cách sử dụng lệnh history chi tiết và hữu ích nhất, từ cơ bản đến nâng cao và những lưu ý về bảo mật bạn cần quan tâm khi thực thi lệnh.

    Những điểm chính

    •  Khái niệm và cơ chế: Hiểu rõ lệnh history là gì, ý nghĩa của lệnh trong việc tăng tốc thao tác và cách lệnh này lưu trữ lịch sử lệnh thông qua bộ nhớ đệm và file .bash_history.
    • Hướng dẫn sử dụng từ cơ bản đến nâng cao: Nắm vững các kỹ thuật hữu ích như ghi lại thời điểm thực thi, tìm kiếm và gọi lại lệnh cũ nhanh chóng, cũng như cách dọn dẹp và kiểm soát lịch sử.
    • Lưu ý về bảo mật: Nhận thức được những rủi ro bảo mật khi history lưu lại thông tin nhạy cảm và biết cách áp dụng các biện pháp phòng ngừa hiệu quả.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các câu hỏi thực tế về cách sử dụng, quản lý, và các vấn đề liên quan đến việc lưu trữ lịch sử lệnh.

    Lệnh history Linux là gì?

    Định nghĩa

    Lệnh history trong Linux là một công cụ dòng lệnh dùng để hiển thị và quản lý danh sách các lệnh đã được người dùng nhập vào terminal trong các phiên làm việc trước đó. Cụ thể, khi bạn sử dụng terminal để thao tác hệ thống, mỗi lệnh bạn gõ sẽ được hệ thống lưu lại vào một file lịch sử (thường là ~/.bash_history đối với Bash hoặc tương tự với các shell khác). Lệnh history sẽ liệt kê lại toàn bộ danh sách này, giúp bạn dễ dàng xem lại, tìm kiếm, gọi lại hoặc thao tác nhanh với các lệnh đã sử dụng trước đó.

    Lệnh history được dùng để hiển thị và quản lý danh sách các lệnh đã được người dùng nhập vào terminal trong các phiên làm việc trước đó.
    Lệnh history được dùng để hiển thị và quản lý danh sách các lệnh đã được người dùng nhập vào terminal trước đó.

    Ý nghĩa của lệnh history

    • Tăng tốc thao tác: Lệnh history cho phép thực hiện lại nhanh các lệnh hoặc chuỗi lệnh đã từng nhập mà không cần nhớ hoặc gõ lại chi tiết.
    • Điều tra và xử lý sự cố: Giúp kiểm tra quá trình thao tác trên hệ thống, phát hiện lệnh gây lỗi hoặc truy vết khi điều tra an ninh.
    • Quản lý lịch sử: Cung cấp các tùy chọn để xóa dòng lệnh nhạy cảm, tùy chỉnh việc lưu lịch sử hoặc đồng bộ giữa nhiều phiên terminal.
    Ý nghĩa của lệnh history
    Ý nghĩa của lệnh history

    Ví dụ cơ bản:

    history        # Hiển thị danh sách các lệnh đã nhập cùng số thứ tự
    history -d n   # Xóa lệnh số thứ tự n khỏi lịch sử
    history -c     # Xóa toàn bộ lịch sử phiên làm việc hiện tại

    Tìm hiểu cơ chế lưu trữ của history

    Lịch sử dòng lệnh là một cơ chế gồm hai giai đoạn được kiểm soát bởi các biến môi trường:

    • Bộ nhớ đệm: Khi bạn đang làm việc trong một phiên terminal, tất cả các lệnh bạn gõ sẽ được lưu tạm thời vào bộ nhớ đệm trong RAM. Số lượng lệnh tối đa được lưu ở đây được quy định bởi biến môi trường HISTSIZE.
    • Lưu trữ dài hạn: Khi bạn đóng phiên terminal, các lệnh từ bộ nhớ đệm sẽ được ghi vào một file văn bản. Đối với Bash, file này mặc định là ~/.bash_history. Số lượng dòng tối đa được phép lưu trong file này được kiểm soát bởi biến HISTFILESIZE.

    Thông thường, HISTFILESIZE được đặt lớn hơn HISTSIZE để đảm bảo lịch sử từ nhiều phiên khác nhau được lưu giữ lâu dài.

    Ví dụ cấu hình trong ~/.bashrc:

    # Giữ 5000 lệnh trong bộ nhớ đệm của phiên hiện tại
    export HISTSIZE=5000
    # Lưu trữ 10000 lệnh gần nhất vào file ~/.bash_history
    export HISTFILESIZE=10000
    Kết quả cấu hình trong ~/.bashrc
    Kết quả cấu hình trong ~/.bashrc

    Ghi lại thời điểm thực thi lệnh 

    Việc ghi lại thời điểm một lệnh được thực thi là rất quan trọng khi bạn cần đối chiếu với các file log hệ thống (/var/log/secure, lastlog) để tìm ra kẻ tấn công đã làm gì và vào lúc nào. Để bật tính năng này, hãy thêm dòng sau vào file ~/.bashrc của bạn:

    echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
    • %F: Hiển thị ngày tháng năm đầy đủ (YYYY-MM-DD).
    • %T: Hiển thị thời gian đầy đủ (HH:MM:SS).

    Sau khi thêm, bạn hãy chạy source ~/.bashrc hoặc mở lại terminal để áp dụng. Từ giờ, mỗi lệnh trong history sẽ có một dấu thời gian rõ ràng.

    Tìm kiếm, gọi lệnh cũ nhanh chóng

    1. Tìm kiếm thông minh với Ctrl + R

    Ctrl + R là tổ hợp phím hữu ích, thay vì dùng mũi tên lên để tìm lại một lệnh cũ, bạn hãy nhấn Ctrl + R. Terminal sẽ hiển thị một lời nhắc (reverse-i-search, lúc này, bạn hãy bắt đầu gõ bất kỳ phần nào của lệnh bạn nhớ và history sẽ ngay lập tức hiển thị lệnh gần nhất khớp với chuỗi bạn đang gõ. Sau đó, bạn nhấn Ctrl + R một lần nữa để tìm các kết quả cũ hơn.

    Tìm kiếm thông minh với Ctrl + R
    Tìm kiếm thông minh với Ctrl + R

    2. Gọi lại lệnh cũ nhanh chóng

    • !!: Thực thi lại lệnh ngay trước đó, rất hữu ích khi bạn quên sudo.
    $ cat /etc/shadow 
    # Lỗi "Permission denied" $ sudo !! 
    # Tương đương với "sudo cat /etc/shadow"
    Kết quả thực thi lại lệnh ngay trước đó
    Kết quả thực thi lại lệnh ngay trước đó
    • !n: Thực thi lại lệnh ở dòng thứ n trong history.
    $ !2011 # Chạy lại lệnh ở dòng 2011
    Thực thi lại lệnh ở dòng thứ n trong history.
    Thực thi lại lệnh ở dòng thứ n trong history.
    • !string: Thực thi lại lệnh gần nhất bắt đầu bằng string.
    $ !vim # Mở lại file gần nhất bạn đã sửa bằng vim
    • !$: Lấy tham số cuối cùng của lệnh trước đó.
    $ mkdir -p /var/www/html/my-new-project
    $ cd !$  # Tương đương với "cd /var/www/html/my-new-project"

    Dọn dẹp và kiểm soát lịch sử

    1. Xóa lịch sử

    Khi bạn vô tình gõ mật khẩu hoặc một thông tin quan trọng vào terminal, history sẽ lưu lại các thông tin này và điều này có thể gây ra những rủi ro về bảo mật.

    • Để xóa một dòng cụ thể, bạn thực hiện lệnh sau:
    $ history       # Tìm số thứ tự của lệnh cần xóa, ví dụ 999
    $ history -d 999
    • Để xóa toàn bộ lịch sử của phiên làm việc hiện tại, bạn tiến hành chạy lệnh sau:
    $ history -c

    2. Chạy lệnh và không lưu vào lịch sử

    Nếu muốn chạy một lệnh mà không muốn bị lưu vào history, bạn có thể bắt đầu lệnh đó bằng một dấu cách.

    Lưu ý

    Tính năng này cần được kích hoạt bằng cách thêm export HISTCONTROL=ignorespace vào ~/.bashrc.
    $  mysql -u root -pMyPassword123  # Dấu cách ở đầu sẽ ngăn lệnh này bị lưu

    Chia sẻ history giữa tất cả các cửa sổ terminal

    Nhiều trường hợp bạn sẽ cảm thấy bất tiện khi gõ một lệnh ở terminal này, nhưng lại không tìm thấy lệnh đó trong history của terminal khác. Để giải quyết vấn đề này, bạn thêm đoạn code vào ~/.bashrc để đồng bộ history ngay lập tức giữa tất cả các phiên terminal đang mở của mình.

    # Không lưu các dòng lệnh trùng lặp.
    export HISTCONTROL=ignoreboth:erasedups
    
    # Nối thêm vào file history, không ghi đè.
    shopt -s histappend
    
    # Tăng kích thước history.
    export HISTSIZE=10000
    export HISTFILESIZE=20000
    
    # Sau mỗi lệnh, ghi vào file và đọc lại history ngay lập-tức.
    export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r 

    Lưu ý về bảo mật khi triển khai history

    Triển khai history có thể vô tình lưu lại các thông tin quan trọng như mật khẩu, API key, token truy cập dưới dạng văn bản thô và bất kỳ ai có quyền truy cập vào tài khoản người dùng của bạn (hoặc file backup) đều có thể đọc được file ~/.bash_history.

    Biện pháp phòng ngừa:

    1. Kiểm soát quyền truy cập file: Đảm bảo file lịch sử của bạn chỉ có thể được đọc bởi chính bạn.
    chmod 600 ~/.bash_history
    1. Chủ động tránh lưu lệnh quan trọng: Bạn tận dụng tính năng ignorespace bằng cách thêm một dấu cách trước các lệnh chứa thông tin bí mật.
    2. Dọn dẹp định kỳ: Bạn hãy sử dụng history -d <số dòng> để xóa ngay lập tức một lệnh chứa thông tin nhạy cảm sau khi gõ. Đối với các hệ thống an ninh cao, bạn có thể cân nhắc việc xóa định kỳ file ~/.bash_history.
    Bạn cần kiểm soát quyền truy cập file
    Bạn cần kiểm soát quyền truy cập file (Nguồn: Internet)

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

    Lệnh history dùng để làm gì trong Linux?

    Lệnh history giúp người dùng tra cứu, quản lý, và thực thi lại các lệnh đã từng được nhập trên terminal. Công cụ này hỗ trợ tăng tốc thao tác, kiểm tra lịch sử vận hành, hỗ trợ điều tra an ninh máy chủ và khắc phục sự cố.

    File lịch sử lệnh ở đâu và có thể chỉnh sửa được không?

    Thông thường, lịch sử lệnh được lưu tại ~/.bash_history (với Bash) hoặc tương tự với các shell khác. Người dùng hoàn toàn có thể chỉnh sửa, xóa dòng, hoặc xóa toàn bộ lịch sử lệnh bằng các công cụ văn bản hoặc lệnh như history -d, history -c.

    Có cách nào tăng số lượng lệnh được lưu lại trong history không?

    Có, bạn chỉnh sửa các biến môi trường:
    export HISTSIZE=10000
    export HISTFILESIZE=20000
    Giá trị càng lớn thì càng lưu được nhiều lệnh hơn.

    Có thể phục hồi lại lịch sử lệnh khi bị xóa file ~/.bash_history không?

    Câu trả lời là có thể nhưng việc khôi phục trực tiếp là rất khó, trừ khi có hệ thống backup. Lời khuyên là bạn hãy luôn sao lưu định kỳ file này nếu hệ thống yêu cầu audit nghiêm ngặt.

    Lệnh history có áp dụng được trên mọi shell hay không?

    Lệnh history phổ biến trên Bash, Zsh, Fish shell, nhưng cú pháp và tùy chọn có thể thay đổi tùy theo từng loại shell. Vì vậy bạn nên tham khảo tài liệu chính thức hoặc sử dụng lệnh man bash để kiểm tra chi tiết shell mình đang dùng

    Lệnh history trong Linux là một công cụ vừa đơn giản vừa mạnh mẽ, đóng vai trò ghi lại toàn bộ quá trình thao tác của bạn trên dòng lệnh. Khi biết cách tận dụng và quản lý lịch sử lệnh hiệu quả, bạn sẽ tăng tốc công việc, chủ động xử lý sự cố cũng như bảo vệ thông tin cá nhân tốt hơn. Đầu tư cấu hình và thực hiện các mẹo bảo mật với lệnh history là những bước đi thiết yếu giúp bạn làm chủ hoàn toàn môi trường terminal chuyên nghiệp và an toàn.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới
    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới

    Việc làm chủ các lệnh Docker cơ bản là yêu cầu tiên quyết giúp mình đóng gói và triển khai ứng dụng một cách nhất quán trên mọi môi trường từ Staging đến production. Thay vì liệt kê danh sách lệnh khô khan, bài viết này đúc kết từ quá trình tôi trực tiếp vận…

    07/05/2026

    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux
    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux

    Làm chủ Git trên Linux không chỉ dừng lại ở việc ghi nhớ câu lệnh, mà là cách bạn tối ưu hóa luồng công việc để loại bỏ hoàn toàn các sai sót thủ công khi cập nhật dữ liệu. Những chia sẻ trong bài viết được đúc kết từ quá trình mình trực tiếp…

    07/05/2026

    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux
    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux

    Trong môi trường Linux chuyên sâu, Emacs không chỉ đơn thuần là một trình soạn thảo mà còn là một hệ sinh thái mạnh mẽ giúp tôi tối ưu hóa toàn bộ quy trình xử lý văn bản và lập trình chỉ trên một giao diện terminal duy nhất. Những kỹ thuật sử dụng và…

    06/05/2026

    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux
    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux

    Trong công việc quản trị hệ thống hàng ngày, Vim là công cụ giúp mình xử lý các tệp tin cấu hình trực tiếp trên Server với tốc độ mà các trình soạn thảo thông thường không thể đáp ứng được. Những hướng dẫn trong bài viết này không chỉ dừng lại ở lý thuyết,…

    06/05/2026

    linux

    lenh

    text