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বিভাগ "বিল্টিনস" :: "প্রিন্টফ" :: "ফর্ম্যাট"