จะดูการประทับเวลาในประวัติทุบตีได้อย่างไร


259

มีวิธีใดบ้างที่ฉันสามารถดูว่าเวลาใดที่คำสั่งถูกเรียกใช้จากประวัติทุบตี เราสามารถดูคำสั่งได้ แต่มีวิธีใดบ้างที่ฉันจะได้รับเวลาด้วย?

Bottom-Line: เวลาดำเนินการในประวัติ Bash


7
ฉันประหลาดใจที่เอกสารไม่ดีทั้งใน Linux และ BSD ใน manpages
Sridhar Sarnobat

ตรวจสอบเรื่องนี้บล็อกออก - sanctum.geek.nz/arabesque/better-bash-history
abhicantdraw

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

4
ไม่แน่ใจว่าทำไมคำตอบสองข้อด้านล่างรู้สึกถึงความต้องการที่จะบอกวิธีเปิดเทอร์มินัล ..
mwfearnley

2
ตามบล็อกที่อ้างอิงโดย @ dog0 การประทับเวลาจะไม่ได้รับการบันทึกเว้นแต่ว่าHISTTIMEFORMATตัวแปรจะถูกตั้งค่าเมื่อมีการใช้คำสั่ง กล่าวอีกนัยหนึ่งหากคุณไม่ได้ตั้งค่าไว้การตั้งค่าตอนนี้จะไม่ช่วยให้คุณเรียกข้อมูลประทับเวลาของคำสั่งที่ออกก่อนหน้านี้
Tomislav Nakic-Alfirevic

คำตอบ:


316

กดCtrl+ Alt+ Tเพื่อเปิด Terminal จากนั้นเรียกใช้คำสั่งด้านล่าง:

HISTTIMEFORMAT="%d/%m/%y %T "

หรือเพื่อทำการเปลี่ยนแปลงแบบถาวรสำหรับผู้ใช้ปัจจุบัน:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

แล้วก็

history

สำหรับข้อมูลเพิ่มเติมโปรดดูที่ทุบตีชายหรือAZ ดัชนีของบรรทัดคำสั่งทุบตีสำหรับลินุกซ์

สำหรับคำสั่งที่เรียกใช้ก่อนที่จะ HISTTIMEFORMATถูกตั้งค่าเวลาปัจจุบันจะถูกบันทึกเป็นเวลาประทับ คำสั่งที่เรียกใช้หลังจากที่HISTTIMEFORMATตั้งค่าไว้จะมีการบันทึกเวลาที่เหมาะสม


7
ประกาศว่าทำไมมีexportใน.bash_profile? มันเป็นตัวแปรอ่านอย่างเดียวbashไม่ใช่โดยคำสั่งที่เปิดใช้จากมันดังนั้นจึงไม่ควรส่งออก
Alvaro Gutierrez Perez

71
โปรดทราบว่านี่จะบันทึกการประทับเวลาสำหรับรายการประวัติใหม่เท่านั้นหลังจากHISTTIMEFORMATตั้งค่าสำหรับเซสชันแล้วนั่นคือคุณไม่สามารถใช้งานย้อนหลังได้ บางคำตอบที่นี่ให้ความประทับใจที่คำสั่งประวัติแสดงรายการที่บันทึกเวลาทันที
Louis Maddox

9
@Louis - จริง ๆ แล้วสิ่งนี้ใช้ได้กับฉันย้อนหลังสำหรับฉัน?!?!
stephenmm

19
@Jamil: สำหรับผู้ที่ปฏิบัติตามมาตรฐาน ISO ก็คือ "% y-% m-% d" ในส่วนของวันที่;)
Gauthier

13
@Gauthier - จริง ๆ แล้วใช้% F สำหรับวันที่ ISO ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns

73

เปิด terminal Ctrl+ Alt+ Tและเรียกใช้

HISTTIMEFORMAT="%d/%m/%y %T "

แล้ว

history

หากต้องการเปลี่ยนแปลงอย่างถาวรให้ทำตามขั้นตอนด้านล่าง

gedit ~/.bashrc

คุณต้องเพิ่มบรรทัดด้านล่างลงในไฟล์. bashrc แล้วบันทึก

export HISTTIMEFORMAT="%d/%m/%y %T "

เรียกใช้คำสั่งด้านล่างไปยังไฟล์. bashrc ต้นทาง

source ~/.bashrc

หลังจากนั้นเรียกใช้historyคำสั่ง

ป้อนคำอธิบายรูปภาพที่นี่

แหล่งที่มา : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/


ขอบคุณที่ตอบคำถาม \ มันจะเป็นการเปลี่ยนแปลงที่ถาวรหรือไม่
rɑːdʒɑ

1
สวัสดีฉันกำลังทำสิ่งนี้ใน OS X และ Windows (ผ่าน MINGW) และฉันเพิ่มลงใน. bash_profile อะไรคือความแตกต่างระหว่างโปรไฟล์และ rc
LasagnaAndroid

18

ใช่คุณสามารถ: ถ้าคุณตั้งค่า$HISTTIMEFORMATเวลา.bash-historyจะถูกบันทึกอย่างถูกต้อง ไม่ได้ช่วย.bash-historyเนื้อหาที่มีอยู่แต่จะช่วยในอนาคต


1
คุณสามารถขยายมันเพื่อความชัดเจนมากขึ้นได้ไหม?
rɑːdʒɑ

5
แก้ไขโพสต์ก่อนหน้า: การตั้งค่า HISTTIMEFORMAT เปิดใช้งานการแสดงการประทับเวลา ... แม้จะมีอยู่แล้ว สิ่งที่ฉันชอบคือ: HISTTIMEFORMAT = '% F% T' เพราะไม่สำคัญว่าคุณอาศัยอยู่ในประเทศใด ... ทุกคนรู้ได้ทันทีว่ามันคือเวลาอะไร :)

4
ฉันตั้งค่า $ HISTTIMEFORMAT และฉันมีเวลาสำหรับวันนี้แม้กระทั่งก่อนหน้าคำสั่งของชุดนี้
Yasin Okumuş

@ user491029 "... แม้มีอยู่เดิม" นี่เป็นเรื่องจริง แต่ทำให้เข้าใจผิด บน Ubuntu 14.04 อย่างน้อยมันเริ่มแสดงการประทับเวลาสำหรับรายการประวัติทั้งหมดเมื่อฉันตั้งค่า HISTTIMEFORMAT แต่ดูเหมือนว่าการประทับเวลาสำหรับคำสั่งใด ๆ ที่เรียกใช้ก่อนเซสชันปัจจุบันคือการประทับเวลาการเข้าสู่ระบบของเซสชันปัจจุบัน
jbobbins

1

คุณจะเห็นการเปลี่ยนแปลงในการเข้าสู่ระบบครั้งต่อไป

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc

0

หากต้องการเปิดใช้งานการประทับเวลาประวัติสำหรับผู้ใช้ทั้งหมดให้สร้างสคริปต์ใน /etc/profile.d:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh

1
สิ่งนี้อาจไม่ทำงานสำหรับผู้ใช้ที่เข้าสู่ระบบผ่านทาง GUI เนื่องจากเทอร์มินัลเริ่มต้นจะไม่เรียกใช้เชลล์การเข้าสู่ระบบ /etc/bash.bashrcจะเป็นสถานที่ที่ดีกว่า
muru

0

ฉันรู้ว่าฉันกำลังตอบกลับช้ามาก แต่การทำสิ่งนี้กับผู้ใช้ทุกคนคุณสามารถสร้าง.shไฟล์ใดก็ได้/etc/profile.dและเพิ่มบรรทัดต่อไปนี้ลงไป:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

หากคุณไม่ได้เข้าสู่ระบบในฐานะrootหรือ superuser คุณต้องใช้teeคำสั่งเพื่อทำสิ่งนี้:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

หากคุณต้องการผนวกไฟล์ใด ๆ ที่มีอยู่ให้ส่งคำสั่ง-aflag ไปที่tee:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

ป้อนคำอธิบายรูปภาพที่นี่


สวัสดี Shashank ขอบคุณที่เพิ่มคำตอบ แต่คำตอบนี้แตกต่างจากคนอื่นอย่างไร หากคำตอบของคุณแตกต่างไปจากเดิมอย่างสิ้นเชิงเรายินดีที่จะรับมัน แต่ถ้าไม่คุณสามารถปรับปรุงคำตอบที่มีอยู่ได้
rɑːdʒɑ

สวัสดีขอบคุณสำหรับการแสดงความคิดเห็น ซึ่งแตกต่างจากคนอื่น ๆ ในลักษณะต่อไปนี้ 1. บางส่วนของพวกเขาได้กล่าวเกี่ยวกับการสร้างสำหรับผู้ใช้ทั้งหมด แต่ไม่มีใครกล่าวถึงเกี่ยวกับการสร้าง / อธิบายชื่อไฟล์ใด ๆ /etc/profile.dใน timestamp.shดูใกล้เคียงกับเทคนิคมาก (มันสร้างความสับสน) ดังนั้นฉันจึงใช้ชื่อexisting-foo-file.sh(แนวคิดของ foo-bar) 2. ไม่มีใครพูดถึงการใช้กับผู้ใช้ที่ไม่ใช่รูท sudoดังนั้นผมจึงได้ให้ตัวอย่างของการใช้ 3. ตัวอย่างที่ 3 ปรับปรุงตัวอย่างที่ 2 ของการต่อท้ายไฟล์ที่มีอยู่ เนื่องจากผู้เริ่มต้น linux / unix สามารถพบปัญหานี้ได้
Shashank Agrawal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.