คำสั่ง 'date + FORMAT' - เรียกว่าอะไร% a,% A,% b, ฯลฯ


10

คำสั่งออกผลลัพธ์เป็นวันและเวลาปัจจุบันเช่นนี้dateFri Apr 12 15:04:03 UTC 2013

ที่จะมีการส่งออกวันเวลาในรูปแบบที่กำหนดเองที่เราสามารถใช้date +FORMATตัวอย่างเช่นเช่นนี้ซึ่งจะช่วยให้สิ่งที่ต้องการdate "+%Y-%m-%dT%H:%M:%S%:z"2013-04-12T15:04:37+00:00

แต่ผมต้องการที่จะรู้ว่า%Y, %m, %d, %H, %M, %Sฯลฯ จะเรียกว่า (เช่นคำศัพท์) นอกจากนี้สิ่งที่Tเรียกว่ามันแตกต่างจากส่วนที่เหลือ?


3
“ รูปแบบควบคุมการส่งออก ลำดับการตีความคือ ... "- มนุษย์dateและ" T "เป็นเพียงตัวอักษร" T "
จัดการ

@ manatwork ใน man page ฉันคิดว่าลำดับที่อ้างถึงทั้ง%Yความหมายและความหมายของมัน
its_me

เคล็ดลับ:date +"You will die in the year %Y"
Izkata

@Izkata ทำให้รู้สึก (?)
its_me

1
@TheoneManis เป็นเพียงตัวอย่างของสิ่งที่Tไม่พิเศษ นอกจากนี้ฉันยังมีวันทำงานแปลก ๆ เมื่อฉันพิมพ์สิ่งนั้น (ฟังการสนทนาของเพื่อนร่วมงาน)
Izkata

คำตอบ:


7

คำที่ใช้ในข้อกำหนด POSIX ของdateคำสั่งคือ "ข้อกำหนดการแปลง"

สตริงรูปแบบสำหรับdateคำสั่งจะขึ้นอยู่กับสตริงรูปแบบสำหรับprintfฟังก์ชั่นของ C ; มาตรฐาน C ยังอ้างถึงสิ่งต่างๆเช่น%d"ข้อกำหนดการแปลง"

Tไม่ได้นำหน้า%เป็นเพียงตัวอักษร: "ตัวละครอื่น ๆ ทั้งหมดจะถูกคัดลอกไปยังเอาต์พุตโดยไม่มีการเปลี่ยนแปลง"

ตามส่วนประวัติการเปลี่ยนแปลงของคำอธิบาย POSIX ของdate:

DESCRIPTION ถูกอัพเดตเพื่ออ้างถึงข้อกำหนดการแปลงแทนที่จะเป็นตัวบอกฟิลด์เพื่อความสอดคล้องกับหมวดหมู่ LC_TIME

เห็นได้ชัดว่าสเปครุ่นก่อนหน้านี้ใช้วลี "field descriptors" แต่ "ข้อกำหนดการแปลง" เป็นคำที่เป็นทางการในปัจจุบัน

แน่นอนว่าไม่ได้หมายความว่าคุณจะต้องอ้างอิงพวกเขาในแบบนั้น


คือ " conversion sequences" หรือ " format sequences" ข้อตกลงที่เหมาะสมเกินไป? ฉันกำลังพิจารณาsequencesมากกว่า'ทำให้มันกล่าวถึงจริงในหน้าคนสำหรับspecifications date
its_me

2
@TheoneManis: สามอย่างใดอย่างหนึ่งดูเหมือนชัดเจนเพียงพอเกี่ยวกับความหมาย
Keith Thompson

4

ฉันคิดว่า "escape sequences" หรือ (ในกรณีนี้) "อักขระพิเศษสำหรับ sequences ที่มีค่าเป็นเปอร์เซ็นต์" จะเป็นวิธีการอ้างอิงโดยทั่วไป Backslash-and percent-escaped sequences ถูกใช้ใน C (เช่น printf) มากดังนั้นพวกมันจึงถูกกรองไปยังคำสั่ง Unix หลายคำสั่งเช่นกัน (เช่นการระบุ prompt สำหรับเชลล์)

"ลำดับการหลบหนี" คือ "% Y", "% m", "% d" และอื่น ๆ ; และ "อักขระพิเศษ" คือ "Y", "m", "d" เป็นต้น "%" จะเป็น "ตัวหนี" (ตัวละครที่ให้ความหมายที่ผิดปกติ / พิเศษกับตัวละครต่อไปนี้)


3

เอกสารนี้จากศูนย์ข้อมูลของไอบีเอ็มอย่างชัดเจนระบุว่าตัวอักษรใน%Y, %m, %d, %H, %M, %Sฯลฯ จะถูกเรียกว่า " สนามอธิบาย "

คุณต้องนำหน้าตัวบอกฟิลด์แต่ละตัวด้วยเครื่องหมาย% (เครื่องหมายเปอร์เซ็นต์) ระบบจะแทนที่ตัวบอกฟิลด์ด้วยค่าที่ระบุ [... ] dateคำสั่งคัดลอกอักขระอื่น ๆ ไปยังเอาต์พุตโดยไม่มีการเปลี่ยนแปลง

นั่นตอบคำถามสองข้อของฉัน (ประมาณ% n & T) และฉันเชื่อว่านี่เป็นเผด็จการเท่าที่จะทำได้


1
IBM ไม่ได้ประดิษฐ์dateคำสั่ง ทำให้เอกสารของพวกเขามีสิทธิ์อะไร พฤติกรรมของคำสั่งนั้นถูกกำหนดโดย POSIX ซึ่งไม่ได้ใช้คำนั้น ประวัติการเปลี่ยนแปลงที่ด้านล่างของคำอธิบาย POSIXบอกว่า "DESCRIPTION ได้รับการอัปเดตเพื่ออ้างถึงข้อกำหนดการแปลงแทนที่จะเป็นตัวบอกฟิลด์เพื่อความสอดคล้องกับหมวดหมู่ LC_TIME" ซึ่งหมายความว่า "ข้อกำหนดการแปลง" ไม่ใช่ "field diecriptor" นั้นถูกต้อง คำปัจจุบัน ดูคำตอบที่อัปเดตของฉันด้วย
Keith Thompson

2

เป็นคนอื่นได้ระบุที่เป็นตัวอักษรตัวอักษรT Tแต่จะเจาะจงตัวอย่างของคุณdate "+%Y-%m-%dT%H:%M:%S%:z"จะปรากฏเป็นสตริงรูปแบบที่สอดคล้องกับข้อกำหนดISO-8601สำหรับวันที่และเวลา ดังนั้นนี่Tคือตัวคั่นที่แยกวันที่ออกจากเวลา

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