ดึงประวัติบรรทัดคำสั่ง Linux ตามวันที่


20

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

> history --include-date | grep 2012-02-27`

ไม่ได้ถ้ามันไม่ได้เปิดใช้งานแล้ว: cyberciti.biz/faq/unix-linux-bash-history-display-date-time
RobotHumans

หากคุณกำลังใช้ zsh:history -E
Vahid

คำตอบ:


32

ตามค่าเริ่มต้นHistoryบันทึกเวลาที่คุณรันคำสั่ง แต่ไม่แสดง เหตุผลนี้คือเมื่อคุณเรียกใช้Historyคำสั่งมันจะมองหาตัวแปรสภาพแวดล้อมที่เรียกว่าHISTTIMEFORMATซึ่งจะบอกวิธีการจัดรูปแบบเวลา หากค่าถูกnullตั้งค่าหรือไม่แสดงเป็นค่าเริ่มต้นแล้วมันจะไม่แสดงเวลาใด ๆ

ตัวอย่างที่มีเวลา -

[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %t '
[qweet@superbox ~]$ history
    1  2012-03-06        su -
    2  2012-03-06        jbach@mobiletribe.net
    3  2012-03-06        mysql
    4  2012-03-06        ll
    5  2012-03-06        cd /opt/
    6  2012-03-06        ll
    7  2012-03-06        exit
    8  2012-03-06        ll
    9  2012-03-06        ls -lsa
   10  2012-03-06        cd ../
   11  2012-03-06        ll
   12  2012-03-06        ll
....

แต่นั่นไม่ใช่ทั้งหมด ตั้งแต่ค่าHISTTIMEFORMATใช้เวลาstrftime(ซึ่งคุณสามารถหาได้ที่นี่ btw) คุณสามารถทำสิ่งมหัศจรรย์ทุกประเภท แต่สำหรับสิ่งที่คุณต้องการจะทำผลงานต่อไปนี้

[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %T %t'
[qweet@superbox ~]$ history | grep -e "2012-03-06 14:48"
 1006  2012-03-06 14:48:05      export HISTTIMEFORMAT='%F %T %t'
 1007  2012-03-06 14:48:07      history
 ...

นอกจากนี้หากคุณต้องการให้ HISTTIMEFORMAT ของคุณยังคงอยู่ให้ลองต่อท้ายรายการนั้นตามที่คุณbashrcต้องการ

echo 'HISTTIMEFORMAT="variables here"' >> ~/.bashrc

คุณจะเห็นการเปลี่ยนแปลงเมื่อคุณเปิดแท็บใหม่ในเทอร์มินัลหรือออกจากระบบและเข้า

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