এই "printf" কমান্ডটি কি করে?


15

আমি একটি টিউটোরিয়াল দিয়ে যাচ্ছিলাম এবং সেখানে আমি একটি কমান্ড পেয়েছিলাম:

printf "%(%s)T"

এই কমান্ডের ফলাফল:

1454299615

কেউ দয়া করে আমাকে বলতে পারেন যে এই আদেশটি কী এবং আউটপুটটির অর্থ কী?


1
এটি শেল নির্ভর বলে মনে হচ্ছে। আপনার printfএকটি অন্তর্নির্মিত? /usr/bin/printfউবুন্টু 14.04 একটি ত্রুটি দেয়: printf: %(: invalid conversion specification। আপনি যদি ব্যবহার করছেন bash। man bashবিল্টিন ডকুমেন্টেশনের জন্য চেষ্টা করুন ।
— আরিফেল

উত্তর:


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's বিল্ট-ইন ফাংশন printf, এবং সাথে কাজ করে না /usr/bin/printf, cshএবং zshবিল্ট-ইন।


@ আর্টেক্সেক্সস আমি আপনার সম্পাদনাগুলি অন্য জায়গায় সরিয়েছি কেবল জিনিস পরিষ্কার রাখতে..তাই ধন্যবাদ :)
— হিমাইল

এই বৈশিষ্ট্য নথিভুক্ত করা হয়? printf(1)ম্যান পেজে আমি এটি দেখিনি ।
— নাট এল্ডারেজ

@ নেটএলড্রেজ printfএখানে একটি অন্তর্নির্মিত (যদিও বাহ্যিকটির একই আচরণ রয়েছে) .. চেক করুনhelp printf ..
— হিমাইল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.