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 tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây
    Các lệnh tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây

    Các lệnh tìm file trong Linux sẽ liệt kê các file vừa được tạo hoặc thay đổi từ đầu ngày đến thời điểm hiện tại, thường được ứng dụng cho thao tác kiểm tra hoặc tự động hóa trên Linux. Trong bài viết này, mình sẽ giới thiệu hai phương pháp hiệu quả và phổ…

    16/01/2026

    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp
    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp

    Enterprise Cloud là mô hình hạ tầng điện toán đám mây được thiết kế riêng cho doanh nghiệp, kết hợp độ linh hoạt của đám mây công cộng với mức độ kiểm soát, bảo mật và tùy biến giống hạ tầng riêng. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về khái…

    16/01/2026

    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng
    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng

    S3 là dịch vụ lưu trữ đối tượng trên đám mây của Amazon, có tên đầy đủ là Amazon Simple Storage Service (Amazon S3). Dịch vụ này cho phép lưu trữ, truy xuất dữ liệu qua Internet với khả năng mở rộng rất lớn, độ sẵn sàng và bảo mật cao. Trong bài viết này,…

    16/01/2026

    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả
    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả

    Lệnh mkdir là lệnh dùng để tạo thư mục mới trong hệ thống file trên Linux/Unix. Đây là công cụ cơ bản để xây dựng và tổ chức cấu trúc thư mục, đặc biệt quan trọng trong các script cài đặt, deploy và tự động hóa. Trong bài viết này, mình sẽ hướng dẫn cách…

    14/01/2026