"লাল" এর মতো রঙের নাম ব্যবহার করে আপনার টার্মিনাল স্ক্রিপ্টগুলিকে রঙিন করা সহজ করার জন্য আমি রুবি এবং জাভাস্ক্রিপ্টের মতো ভাষার লাইব্রেরি সম্পর্কে সচেতন।
তবে বাশ, বা Ksh এ শেল স্ক্রিপ্টগুলির জন্য এর মতো কিছু আছে বা যা কিছু?
"লাল" এর মতো রঙের নাম ব্যবহার করে আপনার টার্মিনাল স্ক্রিপ্টগুলিকে রঙিন করা সহজ করার জন্য আমি রুবি এবং জাভাস্ক্রিপ্টের মতো ভাষার লাইব্রেরি সম্পর্কে সচেতন।
তবে বাশ, বা Ksh এ শেল স্ক্রিপ্টগুলির জন্য এর মতো কিছু আছে বা যা কিছু?
উত্তর:
আপনি আপনার বাশ স্ক্রিপ্টগুলিতে রঙ নির্ধারণ করতে পারেন:
red=$'\e[1;31m'
grn=$'\e[1;32m'
yel=$'\e[1;33m'
blu=$'\e[1;34m'
mag=$'\e[1;35m'
cyn=$'\e[1;36m'
end=$'\e[0m'
এবং তারপরে আপনার প্রয়োজনীয় রঙগুলিতে মুদ্রণ করতে সেগুলি ব্যবহার করুন:
printf "%s\n" "Text in ${red}red${end}, white and ${blu}blue${end}."
আপনি tput
ওআর ব্যবহার করতে পারেনprintf
ব্যবহার tput
,
কেবল নীচের মতো ফাংশন তৈরি করুন এবং সেগুলি ব্যবহার করুন
shw_grey () {
echo $(tput bold)$(tput setaf 0) $@ $(tput sgr 0)
}
shw_norm () {
echo $(tput bold)$(tput setaf 9) $@ $(tput sgr 0)
}
shw_info () {
echo $(tput bold)$(tput setaf 4) $@ $(tput sgr 0)
}
shw_warn () {
echo $(tput bold)$(tput setaf 2) $@ $(tput sgr 0)
}
shw_err () {
echo $(tput bold)$(tput setaf 1) $@ $(tput sgr 0)
}
আপনি উপরের ফাংশন ব্যবহার করে কল করতে পারেন shw_err "WARNING:: Error bla bla"
ব্যবহার printf
print red; echo -e "\e[31mfoo\e[m"
echo -e
নয় printf
, এবং এর জন্য একটি সতর্কতাও দরকার যা এটি tput
বিকল্প থেকে পৃথক হয় যে এটি স্বয়ংক্রিয়ভাবে মানানসই নয় $TERM
।
জেডএসে :
autoload -U colors
colors
echo $fg[green]YES$fg[default] or $fg[red]NO$fg[default]?
print -P '%F{red}blah%f'
সাধারণ সাধারণ ব্যবহারের জন্য (কেবলমাত্র এক লাইনে টেক্সটের সম্পূর্ণ লাইন, পিছনে নতুন লাইনের সাথে) আমি জেসনওয়ারিয়ান কোডটি নিম্নরূপে সংশোধন করেছি :
#!/bin/bash
red='\e[1;31m%s\e[0m\n'
green='\e[1;32m%s\e[0m\n'
yellow='\e[1;33m%s\e[0m\n'
blue='\e[1;34m%s\e[0m\n'
magenta='\e[1;35m%s\e[0m\n'
cyan='\e[1;36m%s\e[0m\n'
printf "$green" "This is a test in green"
printf "$red" "This is a test in red"
printf "$yellow" "This is a test in yellow"
printf "$blue" "This is a test in blue"
printf "$magenta" "This is a test in magenta"
printf "$cyan" "This is a test in cyan"
awk -v red="$(printf '\e[1;31m%%s\e[0m\\n')" -v green="$(printf '\e[1;32m%%s\e[0m\\n')" 'BEGIN { printf red, "This text is in red"; printf green, "This text is in green" }'
tput
আউটপুট / টার্মিনাল সক্ষমতার উপর নির্ভর করে পালানো অক্ষরগুলি পরিচালনা করবে যা ব্যবহার করা ভাল । (ক টার্মিনাল ব্যাখ্যা না পারেন, তাহলে \e[*
রঙ কোড, তারপর, এটা "দূষিত" হবে যা পড়তে কঠিন আউটপুট করে তোলে। (অথবা কখনো কখনো, আপনি যদি grep
এমন আউটপুট, সেখানে আপনি সেই দেখতে হবে \e[*
ফলাফলে)
জন্যtput
এই টিউটোরিয়াল দেখুন ।
তুমি লিখতে পারো :
blue=$( tput setaf 4 ) ;
normal=$( tput sgr0 ) ;
echo "hello ${blue}blue world${normal}" ;
টার্মিনালে একটি রঙিন ঘড়ি প্রিন্ট করার জন্য একটি টিউটোরিয়াল এখানে ।
এছাড়াও, নোট করুন যে tput
কোনও ফাইলে STDOUT পুনর্নির্দেশের সময় পলায়ন চরিত্রটি মুদ্রণ করতে পারে:
$ myColoredScript.sh > output.log ;
# Problem: output.log will contain things like "^[(B^[[m"
এটি না হওয়ার জন্য, এই সমাধানেtput
প্রস্তাবিত মত আপনার ভেরিয়েবল সেটআপ করুন ।