Theo mặc định, không có nơi nào mà tất cả các lệnh được ghi lại và lưu giữ vô thời hạn, mặc dù ~/.bash_history
có chứa một vài lệnh trong quá khứ (nếu bạn sử dụng bash
, đó là vỏ mặc định trong Ubuntu).
Nếu bạn muốn mọi lệnh được nhập vào bash
được ghi lại mãi mãi , bạn phải tự thiết lập nó. Ví dụ: bạn có thể đặt các mục sau trong ~/.bashrc
tệp của mình để ghi nhật ký tất cả các lệnh được nhập trong trình bash
bao vào tệp ~/.command_log
:
# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
\$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi
Ở trên đặt bẫy trên DEBUG
, được thực thi ngay trước khi một lệnh thông thường được thực thi. Các caller
built-in được sử dụng để kiểm tra xem các lệnh đã được gõ vào một vỏ tương tác hoặc chạy qua một cái gì đó giống như ~/.bashrc
. Giá trị ${BASH_COMMAND}
chứa lệnh hiện đang được thực thi.