यह "प्रिंटफ" कमांड क्या करता है?


15

मैं एक ट्यूटोरियल से गुज़र रहा था और वहाँ मैं एक कमांड में आया:

printf "%(%s)T"

इस कमांड का आउटपुट है:

1454299615

क्या कोई मुझे बता सकता है कि यह कमांड क्या है और आउटपुट का क्या मतलब है?


1
यह शेल डिपेंडेंट लगता है। क्या आपका printfबिलियन है? /usr/bin/printfUbuntu 14.04 पर एक त्रुटि देता है printf: %(: invalid conversion specification:। यदि आप उपयोग कर रहे हैं bashman bashबिलिन डॉक्यूमेंटेशन के लिए प्रयास करें ।
arielf

जवाबों:


18

यह प्रारूपित समय को व्यक्त करने का एक तरीका है printf

प्रारूप है:

%(FORMAT)T

कहाँ FORMATसे परिभाषित किया गया है strftime(3)

इसलिए समय प्राप्त करने के लिए (1970-01-01 से 00:00:00 यूटीसी के बाद का समय), हमें 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'एस में निर्मित समारोह printf, और साथ काम नहीं करता /usr/bin/printf, cshऔर zshनिर्मित इन।


@rtecxs मैंने चीजों को स्पष्ट रखने के लिए एक अलग जगह पर अपना संपादन किया है। वैसे भी :) :)
धन्यवाद

क्या यह सुविधा प्रलेखित है? मैंने इसे printf(1)मैन पेज में नहीं देखा ।
नैट एल्ड्रेड

@NateEldredge printfअंतर्निहित यहाँ है (हालांकि बाहरी एक समान व्यवहार है) .. जाँच help printf..
heemayl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.