ฉันทำงานใน Mac OSX ดังนั้นฉันเดาว่าฉันใช้ทุบตี ... ?
บางครั้งฉันป้อนบางสิ่งที่ฉันไม่ต้องการให้จดจำในประวัติศาสตร์ ฉันจะลบออกได้อย่างไร
ฉันทำงานใน Mac OSX ดังนั้นฉันเดาว่าฉันใช้ทุบตี ... ?
บางครั้งฉันป้อนบางสิ่งที่ฉันไม่ต้องการให้จดจำในประวัติศาสตร์ ฉันจะลบออกได้อย่างไร
คำตอบ:
หากคุณต้องการเรียกใช้คำสั่งโดยไม่บันทึกลงในประวัติให้เติมคำสั่งด้วยช่องว่างเพิ่มเติม
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
สำหรับการทำงานที่คุณต้องการอย่างใดอย่างหนึ่งignorespace
หรือในignoreboth
HISTCONTROL
ตัวอย่างเช่นเรียกใช้
HISTCONTROL=ignorespace
.bashrc
เพื่อให้การตั้งค่านี้ถาวรใส่ไว้ในของคุณ
หากคุณได้รันคำสั่งแล้วและต้องการลบออกจากประวัติให้ใช้งานครั้งแรก
history
เพื่อแสดงรายการคำสั่งในประวัติของคุณ ค้นหาหมายเลขถัดจากหมายเลขที่คุณต้องการลบ (เช่น 1234) และเรียกใช้
history -d 1234
นอกจากนี้หากบรรทัดที่คุณต้องการลบได้ถูกเขียนไปที่ $ HISTFILE ของคุณแล้ว (ซึ่งมักจะเกิดขึ้นเมื่อคุณสิ้นสุดเซสชันโดยค่าเริ่มต้น) คุณจะต้องเขียนกลับไปที่ $ HISTFILE มิฉะนั้นบรรทัดจะปรากฏขึ้นอีกครั้งเมื่อคุณเปิดใหม่ เซสชั่น:
history -w
history -a
ในกรณีนั้นมันถูกเขียนไปยังไฟล์ประวัติแทนการออกภายใต้การกำหนดค่าปกติ โดยเฉพาะ: mywiki.wooledge.org/BashFAQ/088
history -w
ของคุณโดยใช้ มิฉะนั้นเมื่อคุณออกจากนั้นเส้นที่ถูกลบยังคงอยู่ที่นั่น!
history -w
หลังจากนั้นhistory -d {num}
เป็นสิ่งที่ฉันต้องการอย่างแน่นอน - ชิ้นอาหารอันโอชะที่สำคัญควรจะเพิ่มเข้าไปในคำตอบมิฉะนั้นผู้ใช้อาจคิดว่าการลบชั่วคราวจากเชลล์ปัจจุบันนั้นถาวร
history -w
จำเป็นสำหรับรายการที่เขียนไปยัง.bash_history
ไฟล์แล้ว วิธีการทำซ้ำ (เช่นบน CentOS 7 พร้อมการกำหนดค่าหุ้น): 1. เข้าสู่ระบบ 2. ป้อนคำสั่งecho foo
3. ออกจากระบบ 4. เข้าสู่ระบบอีกครั้ง 5. ลบรายการสำหรับecho foo
6. ออกจากระบบ 7. เข้าสู่ระบบอีกครั้ง: รายการยังคงอยู่ที่นั่น ขึ้นอยู่กับว่าคุณกำหนดค่าประวัติทุบตีของคุณบางทีคุณสามารถทำให้เกิดปัญหานี้ในรูปแบบอื่นได้เช่นถ้าคุณกระตุ้นการเขียนประวัติก่อนออกจากระบบ
เพื่อล้างประวัติทั้งหมดของคุณใช้
history -c
หากต้องการลบบรรทัดเดียวให้ใช้
history -d linenumber
ฉันมีสิ่งนี้ในของฉัน~/.bashrc
ซึ่งทำให้คำสั่ง$ forget
ลบคำสั่งก่อนหน้าจากประวัติ
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )
ง่ายกว่านี้หรือ
history | tail -n1
คือhistory
คำสั่งเองดังนั้นการลบหมายเลขนั้นจะทำให้เกิดรายการที่ไม่ถูกต้อง อย่างไรก็ตามhistory -d $( history | awk 'END{print $1-1}' )
รวมการเลือกบรรทัดการเลือกฟิลด์และการลบ
คุณสามารถแก้ไขและลบรายการได้~/.bash_history
ตลอดเวลามีประโยชน์เมื่อคุณต้องการลบหนึ่งรายการหรือมากกว่าหนึ่งรายการ
หากคุณต้องการที่จะลืมเซสชั่นทุบตีทั้งหมดคุณสามารถkill
กระบวนการทุบตีในปัจจุบัน เนื่องจากตัวแปร$$
ถือpid
เชลล์ปัจจุบันคุณจึงสามารถทำ:
kill -9 $$
คุณต้องเขียนการเปลี่ยนแปลงหลังจากคุณล้างประวัติ และหากคุณไม่ต้องการให้มีคำสั่งล้างประวัติในประวัติของคุณคุณจำเป็นต้องเรียกใช้คำสั่งเช่นนั้น:
history -c && history -w && logout
โชคดี.
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done