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


15

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

printf "%(%s)T"

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

1454299615

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


1
यह शेल डिपेंडेंट लगता है। क्या आपका printfबिलियन है? /usr/bin/printfUbuntu 14.04 पर एक त्रुटि देता है printf: %(: invalid conversion specification:। यदि आप उपयोग कर रहे हैं bash। man 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.