man printf.1
নীচে একটি নোট রয়েছে: "... আপনার শেলটির নিজস্ব সংস্করণ থাকতে পারে printf
..."। এই প্রশ্নটির জন্য ট্যাগ করা হয়েছে bash
, তবে যদি সম্ভব হয় তবে আমি কোনও শেলটিতে পোর্টেবল স্ক্রিপ্টগুলি লেখার চেষ্টা করি । dash
সাধারণত বহনযোগ্যতা জন্য একটি ভাল ন্যূনতম বেসলাইন - তাই উত্তর এখানে কাজ করে bash
, dash
, & zsh
। যদি কোনও স্ক্রিপ্ট 3 টিতে কাজ করে তবে এটি সম্ভবত কোথাও কোথাও বহনযোগ্য।
সর্বশেষ বাস্তবায়ন printf
মধ্যে dash
[1] না রঙ আউটপুট একটি প্রদত্ত নেই %s
একটি ANSI এস্কেপ অক্ষর সঙ্গে বিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা \e
- কিন্তু একটি বিন্যাসে সুনির্দিষ্টভাবে উল্লেখ করা %b
অকট্যাল সঙ্গে মিলিত \033
(একটি হওয়া ASCII সমতুল্য ESC
কাজ শেষ হবে)। যেকোন আউটলিয়ারের জন্য মন্তব্য করুন, তবে এএফএআইকি, সমস্ত শেলগুলি কার্যকর করেছেprintf
ন্যূনতম ন্যূনতম সময়ে ASCII অক্টাল সাবসেটটি ব্যবহার করতে ।
"প্রিন্টফের সাথে রঙগুলি ব্যবহার করে" প্রশ্নের শিরোনামে, বিন্যাস সেট করার সর্বাধিক বহনযোগ্য উপায় হ'ল অষ্টাল পালানোর সাথে %b
ফর্ম্যাট স্পেসিফায়ারকে printf
( @ ভ্ল্যাডের পূর্বের উত্তরে উল্লেখ করা হয়েছে ) একত্রিত করা \033
।
পোর্টেবল- color.sh
P="\033["
BLUE=34
printf "-> This is %s %-6s %s text \n" $P"1;"$BLUE"m" "blue" $P"0m"
printf "-> This is %b %-6s %b text \n" $P"1;"$BLUE"m" "blue" $P"0m"
ফলাফল:
$ ./portable-color.sh
-> This is \033[1;34m blue \033[0m text
-> This is blue text
... এবং 'নীল' দ্বিতীয় লাইনে নীল।
%-6s
ওপি থেকে বিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা উদ্বোধনী & ক্লোজিং নিয়ন্ত্রণ চরিত্র সিকোয়েন্স মধ্যে বিন্যাস স্ট্রিং এর মাঝখানে হয়।
[1] রেফ: man dash
বিভাগ "বিল্টিনস" :: "প্রিন্টফ" :: "ফর্ম্যাট"