Bagaimana mencegah perintah di zshell agar tidak disimpan ke dalam riwayat?

Jawaban:

37

Gunakan opsi HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

man zshoptions

HIST_IGNORE_SPACE

Hapus baris perintah dari daftar riwayat saat karakter pertama pada baris adalah spasi, atau ketika salah satu alias yang diperluas berisi spasi terdepan. Perhatikan bahwa perintah tetap ada dalam riwayat internal hingga perintah berikutnya dimasukkan sebelum menghilang, memungkinkan Anda untuk menggunakan kembali secara singkat atau mengedit baris. Jika Anda ingin segera menghapusnya tanpa memasukkan perintah lain, ketikkan spasi dan tekan kembali.

Aula Darren
sumber
Saya berharap saya bisa melakukan ini untuk semua-perintah-mengetik-di-terminal-jendela-sejak-terbuka di OSX. Karena ketika Anda menyadari bahwa Anda telah menggonggong pohon yang salah.
Dan Rosenstark
2
Dan kemudian, untuk perintah yang ingin saya cegah, saya menggunakan alias dan memberi awalan spasi: alias jrnl = "jrnl"
Sagar Jauhari
2
@Yar kill -9 shell itu (jika tidak menulis file sejarah baris-per-baris)
Michael Shigorin
1
@MichaelShigorin Terima kasih! kill -9 $$memang fantastis untuk menghindari semua perintah yang dikeluarkan dalam sesi terminal saat ini untuk disimpan dalam sejarah.
Jeffrey Lebowski
2
@ CMCDragonkai Anda bisa unset HISTFILEsebelum blok perintah Anda. Anda perlu mengatur ulang HISTFILEsesudahnya atau membuka shell baru untuk menyimpan perintah dalam riwayat yang Anda inginkan.
Chauncey Garrett
2

Jika Anda menginginkan kontrol yang lebih terperinci atas apa yang ditambahkan ke riwayat ZSH, Anda dapat menentukan zshaddhistoryfungsinya .zshrc. Definisi berikut menggunakan regex untuk menentukan pola yang diabaikan:

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

Perhatikan bahwa perilaku dari man zshoptsbawah HIST_IGNORE_SPACEmasih ada:

Perhatikan bahwa perintah tetap ada dalam riwayat internal hingga perintah berikutnya dimasukkan sebelum menghilang, memungkinkan Anda untuk menggunakan kembali secara singkat atau mengedit baris.

Jadi untuk mengujinya, Anda harus menekan ekstra [Enter]. Ini menghapus perintah baik dari output history, dan juga sejarah panah ↑.

gogstad
sumber