স্ক্রিপ্ট এবং কমান্ডের রঙ অপশন সহ ইকো কমান্ড ভিন্নভাবে কাজ করে


15

যদি আমি echo -e "\e[1;31mThis is red text\e[0m"কোমন্ড লাইনে চালাই তবে এটি লাল পাঠ্য প্রিন্ট করে।

যাইহোক, আমি স্ক্রিপ্ট ফাইল এ লিখুন ব্যবহার test.sh

#! /bin/bash
echo -e "\e[1;31mThis is red text\e[0m"

চালান $ sh test.sh

এটি প্রিন্ট আউট -e \e[1;31mThis is red text\e[0m

কেন তারা পৃথক আচরণ করে?

উত্তর:


29

echoবাশ এবং ড্যাশ ( /bin/sh) এ একটি শেল অন্তর্নির্মিত । যদি আপনি echoকমান্ড লাইনটি থেকে চালান তবে আপনি ব্যাশ বিল্টিন ব্যবহার করছেন, যদি আপনি নিজের শেল স্ক্রিপ্টটি চালাচ্ছেন shতবে ড্যাশ বিল্টিন ব্যবহার করছেন।

এর ড্যাশ সংস্করণটি বিকল্পটি echoজানেন না -eতবে \সিকোয়েন্সগুলির জন্য কোনও বিশেষ পরিচালনা না করে কেবল ভারব্যাটিমের কিছু আউটপুট করে ।

হয় আপনার শেল স্ক্রিপ্টটি চালাতে বাশ ব্যবহার /bin/echoকরুন বা এর পরিবর্তে ব্যবহার করুন echo:

/bin/echo -e "\e[1;31mThis is red text\e[0m"

বিভিন্ন সংস্করণে সমস্যা এড়াতে আপনার পরিবর্তে echoব্যবহার করতে পারেন printf। বিপরীতে echo printfসর্বদা \ক্রম ব্যাখ্যা করে তবে শেষের দিকে স্বয়ংক্রিয়ভাবে একটি লাইনফিড যুক্ত করে না তাই আপনি \nচাইলে আপনাকে শেষে যুক্ত করতে হবে।

কিছু সংস্করণ printfবুঝতে না পারার পরিবর্তে \eআপনার ব্যবহার \033করা উচিত :

printf "\033[1;31mThis is red text\033[0m\n"

এটা কাজ করে। /bin/echoড্যাশ ( /bin/sh) এবং ব্যাশ সহ; echoব্যাশ বা ./tes.shউভয় সঠিকভাবে কাজ করে। নীচের কোডটি bashকেবলমাত্র সাথে কাজ করে । যদি [$ ইউআইডি -ne 0]; তারপরে "রুট ব্যবহারকারী নয়" অন্য প্রতিধ্বনিত করুন "রুট ব্যবহারকারী" ফাই
কিংফেং

1

এটি দিয়ে চালাবেন না sh test.sh, এটি আপনি যেমন বলেছিলেন সাদা রঙে পাঠ্যটি মুদ্রণ করে ... স্ক্রিপ্টটি তৈরি করার পরে, এটি চালিয়ে এক্সিকিউটেবল করুন,

sudo chmod +x /path/test.sh

এখানে চিত্র বর্ণনা লিখুন

স্ক্রিপ্টটি চালান sudo, যেমন sudo ./test.shবা ./test.shউভয়ই কাজ করবে।

অথবা

এর সাথে স্ক্রিপ্টটি চালান bash,

bash /path/test.sh

আমি চালাচ্ছি chmod a+x test.sh, এটি পাঠ্যের রঙে প্রিন্ট করে। পার্থক্য কি. লিনাক্সে কি ঘটেছে ./test.shসমান হওয়া উচিত sh test.sh?
কিংফেং

স্ক্রিপ্টটি চালনার সময় আপনাকে sh ব্যবহার করতে হবে না, আপনি ব্যাশ দোভাষী দিয়ে স্ক্রিপ্টটি তৈরি করেছেন #! /bin/bashযাতে আপনাকে ব্যবহার করতে হয়bash test.sh
অবিনাশ রাজ

এবং .বর্তমান ডিরেক্টরি মানে।
অবিনাশ রাজ

স্ক্রিনশটটি দেখুন, আমার টেস্ট.শ ফাইলটি ডেস্কটপের অভ্যন্তরে স্থাপন করা হয়েছে o সুতরাং আমি সেই ডেস্কটপ ফোল্ডারে চলে ./test.shএসেছি এবং পরে আমি চালিত হব, অবশেষে এটি কাজ করে lease অনুগ্রহ করে স্ক্রিপ্টটি .বর্তমান ডিরেক্টরিতে উপস্থিত থাকলে কেবল এটিই মনে রাখবেন ।
অবিনাশ রাজ

1

এটি সঠিক বিন্যাসে সঠিক কমান্ড প্রয়োজন।

যথাযথ প্রতিধ্বনি বিবৃতি: echo "Hello World!"

রঙ সহ সঠিক প্রতিধ্বনি বিবরণ: echo "\e[1;31mHello World!\e[0m"

ব্যাশ স্ক্রিপ্টে রঙ যুক্ত করা খুব সহজ তবে সহজেই বিভ্রান্তিকর জিনিসগুলির মধ্যে একটি। =)

এই সাইটটি আপনার কাছে এটি পরিষ্কারভাবে ব্যাখ্যা করতে সহায়তা করতে পারে। আমি প্রায়শই এটিকে রেফারেন্স হিসাবে ব্যবহার করি কারণ, সঠিক রঙের কোডগুলি কে সঠিকভাবে মনে করতে পারে? হাঃ হাঃ হাঃ

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