Làm thế nào để ngăn chặn một lệnh trong zshell khỏi được lưu vào lịch sử?


Câu trả lời:


32

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.


Tôi ước tôi có thể làm điều này cho tất cả các lệnh được gõ trong một thiết bị đầu cuối-cửa sổ-kể từ khi mở trên OSX. Vì khi bạn nhận ra rằng bạn đã sủa sai cây.
Dan Rosenstark

2
Và sau đó, đối với các lệnh tôi muốn ngăn chặn, tôi đã sử dụng các bí danh và tiền tố một khoảng trắng: alias jrnl = "jrnl"
Sagar Jauhari

2
@Yar kill -9 shell đó (nếu nó không ghi tập tin lịch sử dòng trên mỗi dòng)
Michael Shigorin

1
@MichaelShigorin Cảm ơn! 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ử.
Jeffrey Lebowski

2
@CMCDragonkai Bạn có thể 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.
Chauncey Garrett

1

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.