วิธีรับวันที่และเวลาโดยใช้อินเตอร์เฟสบรรทัดคำสั่ง


98

ฉันจะรับวันที่ / เวลาปัจจุบันในเทอร์มินัลได้อย่างไร ฉันเริ่มระบบของฉันเป็นส่วนใหญ่ในโหมดข้อความ (คอนโซล) และต้องการให้คำสั่งรู้วันที่ / เวลาปัจจุบัน

คำตอบ:


173

dateคำสั่งจะแสดงวันที่และเวลา

man dateจะแสดงวิธีควบคุมเอาต์พุตให้เป็นรูปแบบที่คุณต้องการหากคุณต้องการสิ่งอื่นนอกเหนือจากเอาต์พุตมาตรฐาน ตัวอย่างเช่น:

date "+%H:%M:%S   %d/%m/%y"

จะส่งออกวันที่และเวลาในรูปแบบ 14:09:22 09/06/2015

สามารถอ่าน man page ของ man page ได้ง่ายขึ้นบนUbuntu Man Pages


6
+1 เพื่อพูดman date
jshthornton

ฉันจะรับความแตกต่างของเขตเวลาได้อย่างไร
Ali D.

19

เวลาเป็นพรอมต์บรรทัดคำสั่ง:

PS1="\@ \w$bk"

ดูเหมือนว่า: 11:41 น. ~

นักเล่นตัวน้อยใส่ในวงเล็บ:

PS1="[ \@ \w$bk ]"

ดูเหมือนว่า: [11:36 AM ~]

เพิ่มผู้ใช้และ localhost ด้วยเวลาทั้งหมดอยู่ในวงเล็บ:

PS1="[ \u on \h \@ \w$bk ]"

ดูเหมือนว่า: [DrPete บน LittleSorrel 10:34 AM ~]

รีเซ็ตพรอมต์ให้เป็นค่าเริ่มต้น #: PS1="# "

หากต้องการให้พรอมต์พร้อมใช้งานอย่างถาวรให้เพิ่มบรรทัดพรอมต์ที่คุณต้องการเช่น

export PS1="\@ \w$bk "

ถึง ~ / .profile

ไม่สามารถช่วยได้ตอนนี้เรากำลังเพิ่ม ... เพิ่มสีกำหนดเป็น. profileเพื่อให้ง่ายต่อการติดตั้ง:

 # Install GNU coreutils
    bk="\[\033[0;38m\]" #means no background and white lines
    txtBlue="\[\033[0;34m\]"   #letter color blue
    txtRed="\[\033[0;31m\]"    #letter color red
    txtCyan="\[\033[1;36m\]"   #letter color cyan
    txtWhite="\[\033[1;37m\]"  #letter color white
    txtYellow="\[\033[1;33m\]" #letter color yellow

จากนั้นพรอมต์สีที่ยอดเยี่ยมจะเป็น:

PS1="[ $txtYellow\u on $txtCyan\h $txtRed\@ $txtWhite\w$bk ]"

คำตอบที่ดีมาก =) แต่สั้นไปหน่อย
AB

คำตอบแรกของฉัน - ดังนั้นตอนนี้ที่ฉันไม่บริสุทธิ์อีกต่อไป - ในลักษณะใดเล่าหรือเชื่อมโยงไปยังข้อมูลพรอมต์ CLI?
drPete

ฉันจะทำให้ถาวรนี้ได้อย่างไรเช่น
AB

เพียงส่งออก @AB คำตอบที่ชาญฉลาด btw :)
Sharad Gautam

1
คำตอบที่ดีขึ้น = ผู้โหวตมากขึ้น
AB

16

มีรายการคำสั่งที่ใช้สำหรับเวลาและวันที่:

  1. คำสั่ง date

    $ date 
    Tue Jun  9 18:04:30 EEST 2015
    
  2. คำสั่งที่zdumpใช้เพื่อสะท้อนเวลาในเขตเวลาที่ระบุ

    $ zdump EEST
    EEST  Tue Jun  9 15:05:17 2015 EEST
    
  3. hwclock

    $ sudo hwclock
    Tue 09 Jun 2015 06:05:55 PM EEST  -0.656710 seconds
    
  4. แต่ต้องติดตั้ง xview-clients

    sudo apt-get install xview-clients
    
  5. ใช้ntpdateคำสั่ง ntpdateใช้เพื่อกำหนดเวลาของระบบ แต่การใช้โดยไม่ต้องsudoพิมพ์เวลาและวันที่

    $ ntpdate
    
    26 Jun 10:48:34 ntpdate[4748]: no servers can be used, exiting
    

11

ด้วย Ubuntu 15.04 (systemd) นอกจากนี้ยังมีtimedatectlซึ่งจะแสดงเวลาและช่วยให้คุณสามารถเปลี่ยนมันและอื่น ๆ man timedatectlใน

ไม่มีข้อโต้แย้งมันให้

% timedatectl
คำเตือน: ละเว้นตัวแปร TZ การอ่านการตั้งค่าเขตเวลาของระบบเท่านั้น

      เวลาท้องถิ่น: ke 2015-06-10 10:31:59 EEST
  เวลาสากล: ke 2015-06-10 07:31:59 UTC
        เวลา RTC: ke 2015-06-10 07:31:59
       โซนเวลา: ยุโรป / เฮลซิงกิ (EEST, +0300)
     เปิดใช้งาน NTP: ใช่
ซิงโครไนซ์ NTP: ใช่
 RTC ในท้องถิ่น TZ: ไม่
      ใช้งาน DST: ใช่
 การเปลี่ยนแปลง DST ล่าสุด: DST เริ่มต้นที่
                  su 2015-03-29 02:59:59 EET
                  su 2015-03-29 04:00:00 EEST
 การเปลี่ยนแปลง DST ถัดไป: DST สิ้นสุดลง (นาฬิกากระโดดหนึ่งชั่วโมงย้อนหลัง) ที่
                  su 2015-10-25 03:59:59 EEST
                  su 2015-10-25 03:00:00 EET

และอีกคุณสมบัติที่ดีที่ฉันได้ใช้คือการtimedatectl set-ntp trueเปิดใช้งานsystemd-timesyncdซึ่งเป็นไคลเอนต์ inbuild SNTP (Simple Network Time Protocol) ซึ่งซิงค์นาฬิกาของคุณกับเซิร์ฟเวอร์ระยะไกล


1
$ timedatectlทำงานได้ดีที่นี่บน Ubuntu 14.04 เช่นกัน
Doorknob

8

แม้ว่าคำตอบทั้งหมดที่นี่จะถูกต้องคุณต้องใช้dateคำสั่งด้วยตนเองเพื่อดูเวลาเมื่อใดก็ตามที่คุณต้องการและผลลัพธ์จะผสมกับเอาต์พุตปกติของคำสั่งของคุณ ส่วนใหญ่ก็โอเค แต่บางครั้งก็ใช้ไม่ได้

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

ในคอนโซลหรือในเทอร์มินัลพูดผ่านsshถ้าคุณใช้หน้าจอท่ามกลาง zillions ของสิ่งต่างๆ ที่คุณสามารถทำได้ (ฉันเคยคิดว่าscreenหลีกเลี่ยงไม่ได้สำหรับการทำงานเมื่อฉันมีเทอร์มินัลข้อความ) คุณมีตัวเลือก --- ตามปกติในการกำหนดค่าเริ่มต้น --- ของการมีนาฬิกาในบรรทัดสถานะ:

หน้าจอเทอร์มินัล

(ภาพหน้าจออยู่บนเทอร์มินัลเสมือน แต่จะเหมือนกันบนคอนโซลเสมือน)


1
Byobu (ซึ่งยึดตามหน้าจอ) ก็ทำได้เช่นกัน เพียงแค่ FYI
Sergiy Kolodyazhnyy


1

ไม่มีการพูดถึงไพ ธ อนดังนั้นฉันจะโยนมันทิ้งที่นี่:

$ python -c 'import time;print(time.asctime(time.localtime()))'                                                                       
Tue Nov 29 20:25:27 2016

วิธีการทำงานค่อนข้างง่าย:

  • เรานำเข้าtimeโมดูล
  • localtime()ฟังก์ชั่นให้structประเภทข้อมูลที่มีข้อมูลทั้งหมดที่จำเป็นเช่นเวลาของวัน, วัน, ปี, ฯลฯ
  • asctime() แปลงข้อมูลทั้งหมดนั้นให้เป็นสตริงและเราพิมพ์ออกมาในรูปแบบที่สวยงาม

ทำงานในหลาม 2 และ 3 เหมือนกัน


0

ถ้าคุณกำลังมองหา sometting เช่นyyyymmddhhmmss , 20160804020100 การใช้งานนี้:

date +%Y%m%d%H%M%S

มันเซิร์ฟเวอร์วัตถุประสงค์ส่วนใหญ่เช่นการสำรองไฟล์หรือการกรองเข้าสู่ระบบ


2
ยินดีต้อนรับสู่ AskUbuntu ในขณะที่คำตอบนี้พยายามแก้ไขคำถามที่โพสต์คำตอบนั้นได้ถูกกล่าวถึงในคำตอบโดยผู้ใช้อื่น ๆ หลายคน โดยส่วนตัวฉันไม่คิดว่าคำตอบนี้มีประโยชน์ โปรดปรับปรุงโพสต์ของคุณ
Sergiy Kolodyazhnyy

0

หากคุณไม่แน่ใจเกี่ยวกับความแม่นยำของนาฬิกาของระบบหรือต้องการใช้แหล่งเวลาภายนอกคุณสามารถรับเวลาผ่านอินเทอร์เน็ต เพื่อความแม่นยำที่ดีที่สุดคุณสามารถใช้sntp(ติดตั้งโดยค่าเริ่มต้นใน MacOS และมาเป็นส่วนหนึ่งของการกระจาย ntp) เพื่อรับวันที่:

sntp pool.ntp.org 

หากคุณมีการเข้าถึงอินเทอร์เน็ตจากอินเทอร์เน็ตคุณสามารถรับได้ผ่าน HTTP โดยใช้HTPซึ่งมีอยู่ในระบบหลายระบบhtpdateซึ่งโดยปกติจะมีความแม่นยำเพียงวินาทีที่ใกล้ที่สุดหรือคุณสามารถเข้าถึงได้โดยใช้ TLS (ซึ่งแยกการประทับเวลาจาก TLS แลกเปลี่ยน) tlsdateซึ่งสามารถให้ความแม่นยำที่ดีกว่า:

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