คำสั่ง“ printf” นี้ทำอะไร?


15

ฉันกำลังจะไปกวดวิชาและที่นั่นฉันเจอคำสั่ง:

printf "%(%s)T"

ผลลัพธ์ของคำสั่งนี้คือ:

1454299615

ใครช่วยกรุณาบอกฉันว่าคำสั่งนี้คืออะไรและสิ่งที่ส่งออกหมายถึงอะไร


ดูเหมือนว่าจะขึ้นอยู่กับเปลือก คุณprintfเป็นคนในตัวหรือไม่? /usr/bin/printfบน Ubuntu 14.04 printf: %(: invalid conversion specificationจะช่วยให้ข้อผิดพลาด: bashหากคุณกำลังใช้ ลองใช้man bashเอกสารประกอบในตัว
arielf

คำตอบ:


17

printfมันเป็นวิธีการแสดงเวลาการจัดรูปแบบโดย

รูปแบบคือ:

%(FORMAT)T

ที่ไหน FORMATstrftime(3)จะถูกกำหนดโดย

ดังนั้นเพื่อให้ได้เวลายุค (เวลาเป็นวินาทีตั้งแต่ 1970-01-01 00:00:00 UTC) เราต้องจัดstrftime(3)รูปแบบ%s:

printf "%(%s)T\n"

โปรดทราบว่า\nในตอนท้ายคุณจะต้องเพิ่มบรรทัดใหม่เป็นprintf(ไม่เหมือนกัน)echo ) จะไม่เพิ่มตามค่าเริ่มต้น

ตัวอย่าง:

$ printf "%(%s)T\n"
1454300377

$ printf "%(%Y-%m-%d)T\n"
2016-02-01

$ printf "%(%Y-%m-%d %H:%M:%S)T\n"
2016-02-01 10:20:27

เพียงเพื่อความสมบูรณ์คุณยังสามารถใช้dateคำสั่งในstrftime(3)รูปแบบที่คล้ายกันเพื่อให้ได้เวลา:

$ date '+%s'
1454300542

$ date '+%Y-%m-%d'    ## Short form: date -I
2016-02-01

$ date '+%Y-%m-%d %H:%M:%S'
2016-02-01 10:22:47

หมายเหตุ : ลักษณะการทำงานนี้เป็นเฉพาะกับbash'และksh' s ในตัวฟังก์ชั่นprintfและไม่ได้ทำงานกับ/usr/bin/printf, cshและzshสร้างอิน


@rtecxs ฉันได้ย้ายการแก้ไขของคุณในสถานที่ที่แตกต่างกันเพียงเพื่อให้ clear..thanks สิ่งล่ะค่ะ :)
heemayl

มีการบันทึกคุณสมบัตินี้หรือไม่ ฉันไม่เห็นมันในprintf(1)หน้าคน
Nate Eldredge

@NateEldredge printfเป็น builtin นี่ (แม้ว่าภายนอกหนึ่งมีพฤติกรรมเดียวกัน) .. เช็คhelp printf..
heemayl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.