ฉันต้องการล้างคำสั่งก่อนหน้าทั้งหมดจากประวัติของเซิร์ฟเวอร์ของฉัน ฉันใช้history -c
และดูเหมือนว่าทุกสิ่งจะถูกล้าง แต่เมื่อฉันไปที่เซิร์ฟเวอร์คำสั่งทั้งหมดยังคงอยู่ที่นั่น
ฉันจะล้างพวกมันอย่างถาวรได้อย่างไร
ฉันต้องการล้างคำสั่งก่อนหน้าทั้งหมดจากประวัติของเซิร์ฟเวอร์ของฉัน ฉันใช้history -c
และดูเหมือนว่าทุกสิ่งจะถูกล้าง แต่เมื่อฉันไปที่เซิร์ฟเวอร์คำสั่งทั้งหมดยังคงอยู่ที่นั่น
ฉันจะล้างพวกมันอย่างถาวรได้อย่างไร
คำตอบ:
ไฟล์~/.bash_history
เก็บประวัติ
หากต้องการล้างประวัติทุบตีทั้งหมดบนเซิร์ฟเวอร์ให้เปิดเทอร์มินัลแล้วพิมพ์
cat /dev/null > ~/.bash_history
วิธีอื่นอื่น ๆ คือการเชื่อมโยง~/.bash_history
ไปยัง/dev/null
หนึ่งผลข้างเคียงที่น่ารำคาญคือรายการประวัติมีสำเนาในหน่วยความจำและมันจะล้างกลับไปยังแฟ้มเมื่อคุณออกจากระบบ
หากต้องการแก้ไขปัญหานี้ให้ใช้คำสั่งต่อไปนี้ (ใช้งานได้สำหรับฉัน):
cat /dev/null > ~/.bash_history && history -c && exit
> ~/.bash_hstory
เพียงพอหรือ
สิ่งที่ต้องทำ:
ในทุก ๆ bash shell ที่เปิดอยู่ (คุณอาจเปิดเทอร์มินัลหลายเครื่อง):
history -c
history -w
เหตุผล: ตามที่ระบุไว้ข้างต้นเปล่าไฟล์history -c
~/.bash_history
เป็นสิ่งสำคัญที่ต้องทราบว่า bash shell ไม่ได้ล้างประวัติไปยังไฟล์ bash_history ทันที ดังนั้นจึงเป็นสิ่งสำคัญที่จะ (1) ล้างประวัติไปยังแฟ้มและ (2) ล้างประวัติความเป็นมาในอาคารทั้งหมด นั่นคือสิ่งที่คำสั่งข้างต้นทำ
ข้อมูลอ้างอิง: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/
history -cw
มีอีกวิธีหนึ่งที่ง่ายกว่ามาก: การเรียกใช้งานhistory -c
พรอมต์เทอร์มินัลและไปเป็นรายการทั้งหมดในbash_history
ไฟล์
history -c
เป็นวิธีที่แน่นอนที่นำไปสู่คำถามนี้
อีกวิธีในการทำเช่นนี้คือการลบ~/.bash_history
ไฟล์โดยใช้rm ~/.bash_history
คำสั่ง เมื่อคุณลงชื่อเข้าใช้อีกครั้ง.bash_history
ไฟล์จะถูกสร้างขึ้นโดยอัตโนมัติ
ล้างประวัติของเชลล์ปัจจุบัน:
history -c
เมื่อคุณออกจากระบบประวัติเชลล์ปัจจุบันของคุณจะถูกผนวกเข้ากับ ~ / .bash_history ซึ่งเป็นแคชของประวัติเชลล์ของเชลล์ก่อนหน้าเป็นจำนวนสูงสุด (ดู HISTFILESIZE ใน "man bash")
หากคุณต้องการลบประวัติทั้งหมดคุณต้องลบข้อมูล ~ / .bash_history ซึ่งรายการข้างต้นจำนวนมากได้แนะนำ เช่น:
history -c && history -w
สิ่งนี้จะล้างประวัติของเชลล์ปัจจุบันและจากนั้นบังคับให้ประวัติของเชลล์ปัจจุบัน (ว่าง) เพื่อเขียนทับ ~ / .bash_history .... หรือให้แม่นยำยิ่งขึ้นมันบังคับให้เขียนทับ HISTFILE (ซึ่งเป็นค่าเริ่มต้นที่
หวังว่านี่จะช่วยได้
rm ~/.bash_history; history -c; logout
ตอนนี้กลับเข้าสู่ระบบและเป็นพยานว่าลูกศรของคุณไม่ให้อะไรเลย
ลองอันนี้
แก้ไขของคุณ.profile
และเพิ่มบรรทัดด้านล่างในตอนท้ายของไฟล์
rm -f .bash_history
ด้วยวิธีนี้ทุกครั้งที่คุณลงชื่อเข้าใช้มันจะลบไฟล์. bash_history ของคุณโดยอัตโนมัติ การเพิ่มตัวเลือกการลบ -r ซ้ำเกิดอันตรายและไม่จำเป็น