เพื่อป้องกันการบันทึกคำสั่ง "อันตราย" ในประวัติทุบตีฉันได้เพิ่มบรรทัดต่อไปนี้ใน.bashrc
ไฟล์ของฉัน:
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
ใช้งานได้ดี แต่มีผลข้างเคียง: ฉันไม่สามารถดูประวัติคำสั่งที่ดำเนินการบนเครื่องได้อย่างสมบูรณ์ สมมติว่าฉันมีเครื่องหลายเครื่องสำหรับการทดลองและฉันต้องการเห็นคำสั่งทั้งหมดที่ดำเนินการ ฉันจะใช้ทุบตีภายในhistory
เพื่อแสดงคำสั่งดำเนินการและบางที grep สำหรับวันที่วันนี้:
history | grep Sep-28
สิ่งที่ฉันต้องการทำคือการบันทึกคำสั่ง "อันตราย" เช่นกัน แต่วาง#
ที่จุดเริ่มต้นของบรรทัดดังนั้นหากฉันเกิดขึ้นเพื่อดำเนินการคำสั่งจากประวัติโดยไม่ได้ตั้งใจจะไม่มีความเสียหายเกิดขึ้น
ฉันไม่รู้ว่ามันเป็นไปได้ไหม
ปรับปรุงและชี้แจง:
สาเหตุหลักที่ทำให้เกิดปัญหาสำหรับฉันก็คือฉันมักจะเชื่อมต่อกับเครื่องของฉันจากเครื่องเทอร์มินัลหลายเครื่องและคำสั่งใด ๆ ที่ทำงานบนเครื่องเทอร์มินัลเครื่องหนึ่งจะอ่านทันทีในประวัติศาสตร์ของเทอร์มินัลอื่น ๆ นี่คือความสำเร็จโดย
PROMPT_COMMAND="history -a; history -c; history -r"
ลองจินตนาการว่าฉันเปิดเทอร์มินัลสองเครื่อง ในหนึ่งฉันมีcat /dev/foo > file.out
กระบวนการทำงานบางอย่าง ls -lAhF
ในครั้งที่สองฉันจะตรวจสอบความคืบหน้าด้วย ฉันทำซ้ำls
โดยการกดUpและENTER(นั่นคือคำสั่งสุดท้ายจากประวัติ) ทันทีที่เสร็จสิ้นคำสั่งแรกที่คำสั่งสุดท้ายจากประวัติศาสตร์จะไม่มีอีกต่อไปแต่ls
cat /dev/foo > file.out
ถ้าฉันไม่ระวังฉันจะเริ่ม cat อีกครั้งและเขียนทับ file.out
สิ่งที่ฉันต้องการบรรลุคือคำสั่ง cat จะถูกนำหน้าด้วย a #
เพื่อที่จะไม่ถูกเรียกใช้งาน อย่างไรก็ตามฉันยังคงเห็นมันในประวัติศาสตร์และสามารถนำมาใช้ซ้ำได้ (หากเป็นคำสั่งที่ยาว) โดยยกเลิกการแสดงความคิดเห็น
watch ls -lAhF
หรือwhile sleep 1; do ls -lAhf; done
; แทนที่จะดูขนาดไฟล์คุณสามารถใช้pv /dev/foo > file.out
( ivarch.com/programs/pv.shtml )