ฉันสนุกกับการใช้control+r
เพื่อค้นหาประวัติคำสั่งของฉันซ้ำ ๆ ฉันพบตัวเลือกที่ดีบางอย่างที่ฉันชอบใช้กับมัน:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
ปัญหาเดียวสำหรับฉันคือการerasedups
ลบรายการที่ซ้ำกันตามลำดับเท่านั้นดังนั้นด้วยคำสั่งสตริงนี้:
ls
cd ~
ls
ls
คำสั่งจริงจะถูกบันทึกไว้เป็นครั้งที่สอง ฉันคิดเกี่ยวกับการทำงานเป็นระยะ ๆ ด้วย:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
สิ่งนี้จะประสบความสำเร็จในการลบรายการที่ซ้ำกัน แต่น่าเสียดายที่คำสั่งจะไม่ถูกเก็บไว้ หากฉันไม่ได้sort
ไฟล์ก่อนฉันไม่เชื่อว่าuniq
สามารถทำงานได้อย่างถูกต้อง
ฉันจะลบรายการที่ซ้ำกันใน. bash_history ของฉันเพื่อรักษาลำดับได้อย่างไร
สินเชื่อพิเศษ:
มีปัญหากับการเขียนทับ.bash_history
ไฟล์ผ่านสคริปต์หรือไม่? ตัวอย่างเช่นหากคุณลบไฟล์บันทึก apache ฉันคิดว่าคุณจำเป็นต้องส่งสัญญาณ nohup / reset ด้วยkill
เพื่อให้มันล้างมันเป็นการเชื่อมต่อกับไฟล์ หากเป็นกรณีของ.bash_history
ไฟล์ฉันอาจใช้วิธีps
ตรวจสอบและตรวจสอบให้แน่ใจว่าไม่มีเซสชันที่เชื่อมต่อก่อนที่สคริปต์การกรองจะทำงานหรือไม่
history
คำสั่ง ฉันควรมองหาที่ไหน
ignoredups
แทนerasedups
สักครู่แล้วดูว่ามันเหมาะกับคุณอย่างไร