Câu trả lời:
Sử dụng tùy chọn HIST_IGNOREinksACE.
setopt HIST_IGNORE_SPACE
người đàn ông zshoptions
HIST_IGNOREinksACE
Xóa các dòng lệnh khỏi danh sách lịch sử khi ký tự đầu tiên trên dòng là khoảng trắng hoặc khi một trong các bí danh mở rộng có chứa khoảng trắng ở đầu. Lưu ý rằng lệnh lưu lại trong lịch sử nội bộ cho đến khi lệnh tiếp theo được nhập trước khi nó biến mất, cho phép bạn sử dụng lại hoặc chỉnh sửa dòng một cách nhanh chóng. Nếu bạn muốn làm cho nó biến mất ngay lập tức mà không cần nhập lệnh khác, hãy nhập khoảng trắng và nhấn return.
kill -9 $$
thực sự tuyệt vời để tránh tất cả các lệnh được ban hành trong phiên cuối cùng hiện tại sẽ được lưu trữ trong lịch sử.
unset HISTFILE
trước khối lệnh của bạn. Bạn cần đặt lại HISTFILE
sau đó hoặc mở một shell mới để giữ các lệnh trong lịch sử của bạn mà bạn muốn.
Nếu bạn muốn kiểm soát chi tiết hơn đối với những gì được thêm vào lịch sử ZSH, bạn có thể xác định zshaddhistory
chức năng trong .zshrc
. Định nghĩa sau đây sử dụng biểu thức chính quy để xác định mẫu bỏ qua:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Lưu ý rằng hành vi từ man zshopts
Dưới HIST_IGNORE_SPACE
vẫn còn hiện diện:
Lưu ý rằng lệnh lưu lại trong lịch sử nội bộ cho đến khi lệnh tiếp theo được nhập trước khi nó biến mất, cho phép bạn sử dụng lại hoặc chỉnh sửa dòng một cách nhanh chóng.
Vì vậy, để kiểm tra nó, bạn sẽ phải đánh thêm [Enter]
. Điều này loại bỏ lệnh cả từ đầu ra của history
, và cũng là lịch sử. mũi tên.