รับประวัติทุบตีเพื่อจดจำเฉพาะคำสั่งที่รันด้วยช่องว่างนำหน้า!


10

คำสั่งที่ดำเนินการในเทอร์มินัลนำหน้าด้วยช่องว่างจะไม่ถูกบันทึกในไฟล์ประวัติคำสั่ง แต่มีวิธีที่จะได้รับการย้อนกลับคือประวัติศาสตร์ควรบันทึกผู้ที่ถูกนำหน้าด้วยพื้นที่?

คำตอบ:


12

คุณสามารถย้อนกลับการตั้งค่าเริ่มต้นของ Ubuntu ได้โดยตั้งค่าตัวแปรสองตัว (HISTIGNORE an HISTCONTROL) โดยใช้คำสั่งดังต่อไปนี้:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredupsเปลี่ยนพฤติกรรมประวัติเพื่อละเว้นบรรทัดที่ซ้ำกันเท่านั้นและไม่ละเว้นบรรทัดที่ขึ้นต้นด้วยช่องว่าง (คุณสามารถตั้งค่า HISTCONTROL เป็นสตริงว่าง (ด้วยHISTCONTROL=) หากคุณต้องการเก็บข้อมูลที่ซ้ำกัน แต่โดยปกติจะไม่ต้องการ)

HISTIGNORE='!( *)'ทำให้ประวัติศาสตร์เพิกเฉยต่อทุกบรรทัดที่ไม่ได้ขึ้นต้นด้วยช่องว่าง: ( *)จะจับคู่ทุกบรรทัดที่ขึ้นต้นด้วยช่องว่าง แต่ตัวเลือกนำหน้า!คัดค้านการแข่งขันดังนั้นจึงตรงกับทุกสิ่งที่ไม่ได้เริ่มต้นด้วยช่องว่าง และทุกสิ่งที่ตรงกับรูปแบบ HISTIGNORE จะถูกละเว้นโดยประวัติ (ตัวเลือกหลังนี้ต้องการให้ bash นั้นextglobเปิดใช้งานด้วยshopt -s extglobแต่มีการตั้งค่าเริ่มต้นบน Ubuntu)

~/.bashrcหากคุณต้องการที่จะทำให้ถาวรนี้ไม่ลืมที่จะใส่ข้างต้นทั้งสองคำสั่งของคุณลงใน


ขอบคุณที่ว่าสิ่งที่ฉันต้องการ .. บันทึกการเปลี่ยนแปลงไป.bashrc.. ฉันต้องการที่จะป้องกันไม่ให้ทุบตีจากการบันทึกทุกcds, lss และคำสั่งในชีวิตประจำวันอื่น ๆ ที่ฉันใช้นั้น และสำหรับคำสั่งบางอย่างที่ฉันต้องการในประวัติศาสตร์ตอนนี้ฉันสามารถใช้คำนำหน้า ..
แม่นยำ

1
@rusty หากคุณต้องการยกเว้นบางคำสั่งเล็กน้อยมันอาจจะดีกว่าถ้าคุณใช้บางอย่างเช่นHISTIGNORE='ls*:cd*'ที่จะทำให้ประวัติไม่สนใจทุกบรรทัดที่ขึ้นต้นด้วยlsหรือcdคุณสามารถขยายรายการนั้นด้วยคำสั่งอื่นเพียงใส่:คำสั่งระหว่าง . แต่อย่าลืมว่าคุณลักษณะการเรียกคืนคำสั่งที่คุณสามารถเข้าถึงได้โดย "ปุ่มลูกศรขึ้น" ก็ใช้ประวัตินี้ด้วยดังนั้นหากคุณตั้งค่าบางอย่างที่จะถูกเพิกเฉยคุณจะไม่สามารถเรียกคืนคำสั่งที่เพิกเฉยได้ด้วย " ลูกศรขึ้น "
falconer

ผมอยากที่จะไม่สนใจคำสั่ง SSH ใด ๆ แต่ไม่เหมือนคำสั่งหรือssh-copy-id ssh-keygenในHISTIGNOREฉันได้รวมssh\ *คำสั่งที่ไม่สนใจ" " ของฉันด้วย การหลีกเลี่ยง space char ดูเหมือนจะเป็นข้อบังคับ
user38537

2

" คำสั่งที่ดำเนินการในเทอร์มินัลนำหน้าด้วยช่องว่างจะไม่ถูกบันทึกในไฟล์ประวัติคำสั่ง "

ใช่พวกเขาเป็น

ประวัติเทอร์มินัล


1
เป็นการตั้งค่าใน bash ;-)
Rinzwind

คำสั่งนำหน้าด้วย spaces.Like ว่างเปล่า `sudo apt-get update`
Avinash ราชา

ค่าของตัวแปร HISTCONTROL ของคุณคืออะไร?
เกล็นแจ็คแมน

@AvinashRaj: ใช่เห็นฉันสั่ง "shoul't นี้จะไม่ถูกบันทึก" ฉันใส่ช่องว่าง (มองเห็นได้ทั้งในบรรทัดคำสั่งและประวัติ) ดังนั้นจึงไม่ได้ผล บางทีคุณสามารถกำหนดค่า (ด้วย HISTCONTROL); แต่มันไม่ได้เป็นกรณีโดยค่าเริ่มต้น
MrVaykadji
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.