ใน Bash ฉันรู้ว่าการเว้นช่องว่างก่อนที่คำสั่งจะป้องกันไม่ให้มันถูกเก็บไว้ในประวัติศาสตร์สิ่งที่เทียบเท่ากับ zshell?
ใน Bash ฉันรู้ว่าการเว้นช่องว่างก่อนที่คำสั่งจะป้องกันไม่ให้มันถูกเก็บไว้ในประวัติศาสตร์สิ่งที่เทียบเท่ากับ zshell?
คำตอบ:
ใช้ตัวเลือก HIST_IGNORE_SPACE
setopt HIST_IGNORE_SPACE
ผู้ชาย
HIST_IGNORE_SPACE
ลบบรรทัดคำสั่งออกจากรายการประวัติเมื่ออักขระตัวแรกในบรรทัดนั้นเป็นช่องว่างหรือเมื่อหนึ่งในนามแฝงที่ขยายออกมามีช่องว่างนำหน้า โปรดทราบว่าคำสั่งยังคงอยู่ในประวัติภายในจนกว่าคำสั่งถัดไปจะถูกป้อนก่อนที่มันจะหายไปทำให้คุณสามารถนำมาใช้ซ้ำหรือแก้ไขสั้น ๆ หากคุณต้องการทำให้มันหายไปทันทีโดยไม่ต้องป้อนคำสั่งอื่นให้พิมพ์เว้นวรรคแล้วกดย้อนกลับ
kill -9 $$
เป็นเรื่องที่ยอดเยี่ยมมากที่จะหลีกเลี่ยงคำสั่งทั้งหมดที่ออกในเซสชันเทอร์มินัลปัจจุบันเพื่อเก็บไว้ในประวัติ
unset HISTFILE
ก่อนบล็อกคำสั่งของคุณ คุณต้องรีเซ็ตในHISTFILE
ภายหลังหรือเปิดเชลล์ใหม่เพื่อเก็บคำสั่งในประวัติที่คุณต้องการ
หากคุณต้องการควบคุมสิ่งที่เพิ่มเข้ามาในประวัติ ZSH ให้ละเอียดยิ่งขึ้นคุณสามารถกำหนดzshaddhistory
ฟังก์ชัน.zshrc
ได้ คำจำกัดความต่อไปนี้ใช้ regex เพื่อกำหนดรูปแบบที่จะละเว้น:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
โปรดทราบว่าพฤติกรรมจากman zshopts
ภายใต้HIST_IGNORE_SPACE
ยังคงมีอยู่:
โปรดทราบว่าคำสั่งยังคงอยู่ในประวัติภายในจนกว่าคำสั่งถัดไปจะถูกป้อนก่อนที่มันจะหายไปทำให้คุณสามารถนำมาใช้ซ้ำหรือแก้ไขสั้น ๆ
[Enter]
ดังนั้นเพื่อทดสอบว่าคุณจะต้องตีเป็นพิเศษ สิ่งนี้จะลบคำสั่งทั้งสองออกจากผลลัพธ์history
และประวัติลูกศร.