อ่านประวัติคำสั่งเทอร์มินัลทั้งหมดใน OS X


10

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

ฉันใช้ย้อนกลับ-I-ค้นหาพรอมต์และมีการปรับปรุง .bash_profile ของฉันในการจัดเก็บประวัติทั้งหมดของฉันเป็นที่กล่าวถึงที่นี่ในMactoids: วิธีการค้นหาประวัติการสั่ง

  1. เริ่มเทอร์มินัล

  2. นำทางไปยังโฟลเดอร์ Home โดยการป้อน:

    cd ~/
    
  3. สร้าง. bash_profile โดยป้อน:

    touch .bash_profile
    
  4. ตอนนี้แก้ไข. bash_profile ในเท็กซ์เอดิเตอร์ที่คุณชื่นชอบหรือพิมพ์ในหน้าต่าง Terminal เพื่อเปิดไฟล์ใน TextEdit เริ่มต้นโดยอัตโนมัติ:

    open -e .bash_profile
    
  5. สุดท้ายให้เพิ่มส่วนนี้ลงในไฟล์. bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. บันทึกและออก.

คุณมีความคิดใด ๆ ที่ฉันสามารถเข้าถึงเพื่อส่งออกประวัติคำสั่งเทอร์มินัลใน OS X ได้หรือไม่?


4
ฉันเข้าใจคุณได้อ่านดังนั้นคุณควรรู้ว่าประวัติศาสตร์จะถูกเก็บไว้ในแฟ้มman bash ~/.bash_historyคุณต้องรู้อะไรอีกบ้างคุณสามารถชี้แจงได้ไหม

ใช่เพราะฉันมีคำสั่ง 'man' ใหม่อยู่แล้วอ่านคู่มือพบคำตอบและตัดสินใจถามคำถามข้างต้นเพื่อความสนุกของมัน ขอบคุณ fideli สำหรับคำตอบที่รวดเร็วชัดเจนและไม่โอ้อวด
Cameron McGrane

คำตอบ:


6

ประวัติทั้งหมดของคุณจะถูกเก็บไว้~/.bash_historyที่ซึ่งทั้งคู่reverse-i-searchและปุ่มขึ้น / ลงใช้ ไฟล์นั้นจะถูกตัดเป็นประจำ แต่ถ้าคุณทำตามคำแนะนำในลิงค์ของคุณ.bash_historyไฟล์นั้นจะไม่ถูกตัดทิ้ง


การตัดแต่ง FIFO หรือ LIFO?
Pacerier

@Pierier ฉันไม่สามารถมั่นใจได้อย่างสมบูรณ์เพราะฉันไม่ได้ใช้ macOS อีกต่อไป แต่ถ้าฉันต้องเดาการตัดแต่ง FIFO
fideli

2

โดยส่วนตัวแล้วฉันต้องการทำอย่างง่ายกว่าและพิมพ์ทุกอย่างแทนการตรวจสอบเซสชันล่าสุดซึ่งไม่ครอบคลุม windows Terminal ทั้งหมดและคำสั่งทั้งหมด

รับประวัติเต็ม

cd ~/.bash_sessions
cat *.historynew *.history

หากคุณต้องการจัดเรียงตามวันที่เซสชัน

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`

1

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

คุณจะต้องมี 2 สิ่ง: 1. ป้อนคำสั่งนี้ในเทอร์มินัลของคุณเพื่อให้แน่ใจว่าฮิป

shopt -s histappend && shopt histappend

2. คุณจะต้องรู้ว่าคำสั่งประวัติของคุณเก็บไว้ที่ไหน

ไฟล์ประวัติของฉันถูกเก็บไว้ใน ~ / .bash_sessions ดังนั้นนั่นคือสิ่งที่รหัสของฉันจะสะท้อนให้เห็น หากคุณถูกเก็บไว้ใน ~ / .bash_history หรือไดเรกทอรีอื่นเพียงแค่เปลี่ยนเป็น ~ / .bash_sessions เมื่อเราหาแหล่งข้อมูลนั้นลงใน bash_profile ของเรา

เมื่อคุณทราบแล้วให้เปิด bash_profile และเพิ่มรหัสต่อไปนี้:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  

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