শেল স্ক্রিপ্টগুলিতে "বন্ধুত্বপূর্ণ" টার্মিনালের রঙের নাম?


25

"লাল" এর মতো রঙের নাম ব্যবহার করে আপনার টার্মিনাল স্ক্রিপ্টগুলিকে রঙিন করা সহজ করার জন্য আমি রুবি এবং জাভাস্ক্রিপ্টের মতো ভাষার লাইব্রেরি সম্পর্কে সচেতন।

তবে বাশ, বা Ksh এ শেল স্ক্রিপ্টগুলির জন্য এর মতো কিছু আছে বা যা কিছু?


8
দয়া করে একটি উত্তরকে সঠিক হিসাবে চিহ্নিত করুন ... আপনি এখনও পর্যন্ত আপনার মোট 46 টি প্রশ্নের মধ্যে 1 টি চিহ্নিত করেছেন!
এম

উত্তর:


39

আপনি আপনার বাশ স্ক্রিপ্টগুলিতে রঙ নির্ধারণ করতে পারেন:

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}."

11

আপনি 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"

2
echo -eনয় printf, এবং এর জন্য একটি সতর্কতাও দরকার যা এটি tputবিকল্প থেকে পৃথক হয় যে এটি স্বয়ংক্রিয়ভাবে মানানসই নয় $TERM
টবি স্পিড


4

সাধারণ সাধারণ ব্যবহারের জন্য (কেবলমাত্র এক লাইনে টেক্সটের সম্পূর্ণ লাইন, পিছনে নতুন লাইনের সাথে) আমি জেসনওয়ারিয়ান কোডটি নিম্নরূপে সংশোধন করেছি :

#!/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" }'
ওয়াইল্ডকার্ড

3

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 প্রস্তাবিত মত আপনার ভেরিয়েবল সেটআপ করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.