ฉันจะแก้ไขประวัติเทอร์มินัล Mac OS X ได้อย่างไร


12

ฉันจะแก้ไขประวัติทุบตีใน Mac OS X ได้อย่างไร ฉันป้อนรหัสผ่านในหน้าต่างนั้นโดยไม่ตั้งใจและไม่ต้องการลบประวัติทั้งหมดของฉัน

คำตอบ:


14

การแก้ไข.bash_historyเป็นเพียงเรื่องของการเปิดไฟล์ด้วยโปรแกรมแก้ไข มีสองวิธีที่คุณสามารถทำได้

  1. ในTerminalเพียงแค่พิมพ์vi ~/.bash_historyจากนั้นแก้ไขไฟล์ตามที่คุณต้องการและบันทึก ตัวเลือกนี้อาจยุ่งยากหากคุณไม่คุ้นเคยกับviแน่นอน
  2. ทำให้ไฟล์นั้นปรากฏขึ้นโดยทำตามคำแนะนำเหล่านี้เช่นเปิดเป็นไฟล์อื่นแก้ไขและบันทึก
  3. ในเทอร์มิopen ~/.bash_history -a /Applications/TextEdit.appเพียงประเภท คำสั่งนี้จะเปิดไฟล์ด้วยTextEditคุณสามารถเลือกแก้ไขข้อความอื่น ๆ ได้แน่นอน แก้ไขไฟล์และบันทึก

เพื่อให้การเปลี่ยนแปลงมีความชัดเจนเพียงรีสตาร์ท bash


ฉันได้รับ "ปฏิเสธการอนุญาต" เมื่อฉันทำ sudo ฉันไม่เห็นคำสั่งทั้งหมดที่ป้อน
Karthick S

1
@KarthickS คุณได้รับการทำสิ่งที่ถูกต้อง?
Thecafremo

ถ้าฉันดูเนื้อหาของ. bash_history เนื้อหาจะแตกต่างจากเอาต์พุตของคำสั่ง history ฉันรู้จักทั้งสองเนื้อหาของไฟล์นั้นเก่ากว่า จะเกิดอะไรขึ้นหากหน้าต่างคำสั่งหลายบานเปิดขึ้น? ดูเหมือนว่าพวกเขาจะไม่แบ่งปันประวัติคำสั่งเดียวกัน ป.ล. ฉันยืนยันว่าฉันใช้ทุบตี
Victor Engel

1
ฉันคิดว่าฉันพบคำตอบของฉัน ECHO $ ​​HISTFILE แสดงรายการที่จะแก้ไข
Victor Engel

10

ในประเภทอาคารhistoryและบันทึกหมายเลขบรรทัด history -d noted-line-numberโทรไป คุณสามารถตรวจสอบว่าบรรทัดถูกลบโดยใช้historyอีกครั้ง


2
สิ่งนี้ใช้ไม่ได้กับ Yosemite กับ ZSH
เปาโลโอลีฟราลีร่า

คำถามเกี่ยวกับทุบตีไม่ใช่ zsh อ่านอย่างละเอียด!
Unnamed_1

1
@DmitryDupelov คุณถูกต้องขอโทษที่รบกวน อย่างไรก็ตามมันเป็นเครื่องเตือนใจผู้อ่านในอนาคต ขอบคุณสำหรับการแก้ไขความคิดเห็นของฉัน
เปาโลโอลีฟราลีรา

2
nano ~/.bash_history

เมื่อคุณทำเสร็จแล้ว ctrl+x กลับมาตอบรับคำตอบที่ถูกต้อง


0

ฉันคิดว่าคำตอบของ Dmitry เหมาะถ้าทำก่อนบันทึกประวัติ - โดยค่าเริ่มต้นการบันทึกจะเกิดขึ้นเมื่อออกจาก shell / terminal

หากคุณอาจบันทึกประวัติไปที่ ~ / .bash_history แล้วฉันชอบคำตอบของ Thecafremo แต่ฉันขอแนะนำให้เพิ่มขั้นตอนในการออกจาก Terminal เพื่อให้แน่ใจว่าไม่มีอินสแตนซ์ bash ที่โหลดประวัติและจะบันทึกอีกครั้ง นี่เป็นเรื่องยุ่งยากโดยเฉพาะอย่างยิ่งหากคุณมีเทอร์มินัลหลายเครื่องและเปิดใช้งานการอัปเดตประวัติคำสั่งต่อคำสั่งทุกประเภท

พื้นหลัง:

  • bash บันทึกประวัติภายในอินสแตนซ์ของเชลล์
  • bash สามารถเขียนประวัตินี้ไปยังไฟล์ซึ่งโดยทั่วไปจะเกิดขึ้นเมื่อคุณออกจากเชลล์ / เทอร์มินัล
  • bash สามารถอ่านจากไฟล์ลงในประวัติซึ่งมักจะเกิดขึ้นเมื่อคุณเปิดเชลล์ / เทอร์มินัล
  • เป็นไปได้ที่จะเปลี่ยนพฤติกรรมเริ่มต้นเพื่อให้ประวัติเผยแพร่เร็วขึ้นซึ่งสามารถโยกย้าย BAD_TEXT ของคุณไปยังไฟล์และหน้าต่างอื่น ๆ

ไม่ว่าคุณจะใช้วิธีใดฉันจะเพิ่มอีกหนึ่งขั้นตอน: ยืนยันความสำเร็จ!

  1. ออกจาก Terminal.app
  2. เปิด Terminal.app ขึ้นมาใหม่
  3. ยืนยันข้อความที่ละเมิดไม่ได้อยู่ในประวัติ - โดยเฉพาะอย่างยิ่งในทางที่จะไม่สร้างประวัติเพิ่มเติม นั่นคือไม่grep BAD_TEXT .bash_history! คำสั่งใหม่นี้จะเข้าสู่ประวัติศาสตร์ ฉันเพิ่งเปิด. bash_history ในเครื่องมือแก้ไขที่คุณชื่นชอบและค้นหา BAD_TEXT ในนั้น

สิ่งนี้จะช่วยให้คุณอุ่นใจได้ว่าคุณได้กำจัด BAD_TEXT ไม่ว่าคุณจะเผชิญกับการตั้งค่าทุบตีบ้าคลั่งแบบใด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.