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


15

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

printf "%(%s)T"

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

1454299615

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


1
এটি শেল নির্ভর বলে মনে হচ্ছে। আপনার printfএকটি অন্তর্নির্মিত? /usr/bin/printfউবুন্টু 14.04 একটি ত্রুটি দেয়: printf: %(: invalid conversion specification। আপনি যদি ব্যবহার করছেন bashman 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.