ฉันจะดูประวัติ Bash จากเทอร์มินัลเซสชันมากกว่าหนึ่งใน Ubuntu ได้อย่างไร [ซ้ำ]


12

ซ้ำเป็นไปได้:
ไฟล์ประวัติสามารถรวมเป็นหนึ่งเดียวในทุบตี?

ฉันใช้ Ubuntu Server 9.10 และฉันต้องการดูประวัติทุบตีของฉันสำหรับเซสชันเทอร์มินัลมากกว่าหนึ่งเซสชัน นั่นคือคำสั่งสุดท้าย 200 คำสั่งหรือมากกว่านั้นแม้ว่าฉันจะออกจากระบบแล้ว

เมื่อฉันใช้historyฉันเพิ่งเห็นคำสั่งทั้งหมดจากเซสชันเทอร์มินัลจริงของฉัน ฉันจะดูประวัติคำสั่งเพิ่มเติมจาก Bash ได้อย่างไร มีการตั้งค่าเฉพาะสำหรับทุบตีที่ฉันควรเปลี่ยนจากค่าเริ่มต้นใน Ubuntu หรือไม่

ฉันไม่มี~/.bash_historyไฟล์ แต่ฉันมีและ~/.bashrcด้วยHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

UPDATE:ตอนนี้ฉันลองใช้ Ubuntu Server 10.10 ใน VirtualBox หากฉันเพิ่งปิด VirtualBox โดยไม่ใช้คำสั่ง shutdown ดังนั้นครั้งต่อไปเมื่อฉันบูตคำสั่งจากเซสชันล่าสุดจะไม่ถูกบันทึกในไฟล์ประวัติ

คำสั่งจะถูกบันทึกไว้ก็ต่อเมื่อฉันปิดเครื่องด้วยคำสั่งปิดเครื่อง เช่นการปิดเครื่อง -P 0

นี่จะเป็นสาเหตุของปัญหาของฉัน ดังนั้นฉันต้องหาวิธีบันทึกประวัติคำสั่งบ่อยขึ้น เช่นหลังจากแต่ละคำสั่ง


คุณได้อะไรถ้าคุณทำecho $HISTSIZEและecho $HISTFILESIZE? My (Ubuntu) ~/.bashrcมีHISTCONTROLบรรทัดเดียวกับของคุณซึ่งเป็นสมองตายตั้งแต่บรรทัดที่สองจะแทนที่บรรทัดแรกและค่าควรแยกจากลำไส้ใหญ่ไม่ใช่คั่นด้วยเครื่องหมายจุลภาค หากคุณset -oแสดงบรรทัดที่ระบุว่า "history on"
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

ฉันจะได้รับ500กับechoตัวแปรทั้งสองhistory on
โจนัส

คำสั่งHISTCONTROLที่สองคือคำที่คุณได้รับไม่ใช่คำสั่งแรก แม้ว่าการเพิกเฉยทั้งสองจะเป็นชวเลขสั้น ๆ สำหรับการเพิกเฉย + การเพิกเฉยเพื่อไม่ให้เกิดปัญหา
ต้มตุ๋น quixote


1
@warren: หาดี ฉันเห็นด้วยดูเหมือนว่าสิ่งที่ Sanoj ขอ
ต้มตุ๋น quixote

คำตอบ:


7

คุณสามารถใช้ได้

history -a

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

คุณสามารถใช้ได้

history 200 | less

เพื่อดูจำนวนรายการนั้น

นอกเหนือจากการดูรายการในหน้าคนที่เกี่ยวข้องกับการทุบตีHISTSIZEHISTFILESIZE


history -a´ doesn't do anything for me, and not ประวัติศาสตร์ 200 | น้อยกว่าอย่างใดอย่างหนึ่ง แต่ฉันได้อัปเดตคำถามของฉันพร้อมข้อมูลเพิ่มเติม ขอบคุณอยู่ดี
Jonas

ฉันคิดว่าฉันได้พบเหตุผลแล้ว ประวัติจะไม่ถูกบันทึกเว้นแต่ฉันจะปิดระบบใหม่ทั้งหมด ดูคำถามใหม่ของฉัน: unix.stackexchange.com/questions/3330/…
Jonas

7

~/.bash_historyเมื่อคุณออกจากระบบประวัติศาสตร์ที่ได้รับการผนวกเข้ากับแฟ้ม ลองดูที่นั่น

โดยค่าเริ่มต้นมันจะจดจำคำสั่ง 500 ครั้งล่าสุดของคุณ หากคุณต้องการที่จะบันทึกการตั้งค่าอื่น ๆ อีกตัวแปรในHISTSIZE~/.bashrc

ฉันยังจะเพิ่มignoredupsไปHISTCONTROL(กับHISTCONTROL=$HISTCONTROL:ignoredup) สิ่งนี้ทำให้คำสั่งที่ต่อเนื่องกันจะถูกบันทึกเพียงครั้งเดียว

ดูman 1 bashสิ่งอื่น ๆ ที่คุณสามารถปรับได้เกี่ยวกับประวัติ


ขอบคุณสำหรับการตอบกลับของคุณ. แต่ผมไม่ได้มี~/bash_historyไฟล์และไม่มีHISTSIZEใน~/.bashrcแต่ฉันมีHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsและHISTCONTROL=ignorebothและมันเป็นอูบุนตูเซิร์ฟเวอร์ถ้าเรื่องที่
Jonas

1
@Snoj หนังสือใน. ~/.bash_historyและHISTSIZEมันจะใช้ค่าเริ่มต้นของ 500 รายการ
Benjamin Bannier

ใช่ แต่ฉันไม่มี~/.bash_historyไฟล์ในระบบของฉัน ฉันเคยls -aตรวจสอบ
Jonas

@Sanoj ดังนั้นอาจไม่ใช่ค่าเริ่มต้น ชื่อไฟล์จะถูกเก็บไว้ใน$HISTFILEตัวแปรดังนั้นecho $HISTFILEจะบอกให้คุณดู
Benjamin Bannier

echo $HISTFILEให้ฉัน/home/sanoj/.bash_history- แปลก อาจจะไม่ได้เปิดใช้งานด้วยเหตุผลด้านความปลอดภัย?
Jonas

1

ประวัติทุบตีมักจะโหลดเมื่อเชลล์เริ่มทำงานและจะถูกบันทึกเมื่อออกจากปกติ คุณสามารถใช้history -aและhistory -nเพื่อแทนที่สิ่งนี้ แต่ไม่ได้โดยอัตโนมัติเว้นแต่คุณจะทำผิดกฎ$PROMPT_COMMANDหรือสิ่งที่คล้ายกัน


0

Sanoj สิ่งนี้น่าจะ "ทำงานได้จริง"; ฉันไม่คิดว่าควรจะมีอะไรพิเศษที่คุณต้องทำเพื่อเปิดใช้งานสิ่งนี้ ดูเหมือนว่ามีบางสิ่งเข้ามาขัดขวางกิจกรรมปกติ

ฉันจะดูใน / etc / profile, / etc / bashrc (หรือบางที /etc/bash.bashrc ตามแหล่งที่มา), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout เพื่อดู หากมีสิ่งใดที่อาจส่งผลกระทบต่อประวัติ (อาจเป็นgrep -i histในไฟล์แต่ละไฟล์ด้านบน)

... โดยเฉพาะฉันสงสัยว่าคุณมีบางอย่างใน ~ / .bash_logout ที่ลบไฟล์

หรือเป็นไปได้ว่ามีบางสิ่งที่เอาชนะ$HOMEตัวแปรได้หรือไม่?

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