কম্পিউটার টিউটোরিয়াল

১০টি প্রফেশনাল PS1 কাস্টমাইজেশন আপনার লিনাক্স ব্যাশ প্রম্পট উন্নত করার জন্য

১০টি প্রফেশনাল PS1 কাস্টমাইজেশন আপনার লিনাক্স ব্যাশ প্রম্পট উন্নত করার জন্যPhoto courtesy of f1r3storm85

পূর্বের আর্টিকেলে আমরা লিনাক্স এনভায়রনমেন্ট ভেরিয়েবল PS[1-4] এবং PROMPT_COMMAND নিয়ে আলোচনা করেছিলাম। কার্যকরভাবে ব্যবহার করলে, PS1 কমান্ড প্রম্পটে সরাসরি মূল্যবান তথ্য প্রদান করতে পারে।

টম রেডারে, অ্যানজেলिना জুলি তার আঙ্গুলের নোকেই সকল গ্যাজেট এবং অস্ত্র রাখে রহস্য সমাধান করতে স্টাইল সহ। অ্যানজেলिना জুলির গ্যাজেট এবং স্টাইল মিলানো কঠিন হলেও, কমপক্ষে এই আর্টিকেলের ১০টি উদাহরণ ব্যবহার করে পুরনো লিনাক্স প্রম্পটকে খুব ফাংশনাল এবং স্টাইলিশ বানাতে চেষ্টা করি।

১. প্রম্পটে ইউজারনেম, হোস্টনেম এবং বর্তমান ওয়ার্কিং ডিরেক্টরি প্রদর্শন

এই উদাহরণে PS1 প্রম্পটে নিচের তিনটি তথ্য প্রদর্শন করে:

  • \u – ইউজারনেম
  • \h – হোস্টনেম
  • \w – বর্তমান ওয়ার্কিং ডিরেক্টরির ফুল পাথ
-bash-3.2$ export PS1="\u@\h \w> " ramesh@dev-db ~> cd /etc/mail ramesh@dev-db /etc/mail>

২. প্রম্পটে বর্তমান সময় প্রদর্শন

PS1 এনভায়রনমেন্ট ভেরিয়েবলে, আপনি সরাসরি যেকোনো লিনাক্স কমান্ড এক্সিকিউট করতে পারেন, $(linux_command) ফরম্যাটে নির্দিষ্ট করে। নিচের উদাহরণে, $(date) কমান্ড এক্সিকিউট করে প্রম্পটের ভিতরে বর্তমান সময় দেখানো হয়েছে।

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> " ramesh@dev-db [11:09:56]>

আপনি \t ও ব্যবহার করতে পারেন hh:mm:ss ফরম্যাটে বর্তমান সময় দেখাতে নিচের মত।

ramesh@dev-db ~> export PS1="\u@\h [\t]> " ramesh@dev-db [12:42:55]>

আপনি \@ ও ব্যবহার করতে পারেন ১২-ঘণ্টার am/pm ফরম্যাটে বর্তমান সময় দেখাতে নিচের মত।

ramesh@dev-db ~> export PS1="[\@] \u@\h> " [04:12 PM] ramesh@dev-db>

৩. প্রম্পটে যেকোনো লিনাক্স কমান্ডের আউটপুট প্রদর্শন

আপনি প্রম্পটে যেকোনো লিনাক্স কমান্ডের আউটপুট দেখাতে পারেন। নিচের উদাহরণটি প্রম্পটে তিনটি আইটেম | (পাইপ) দিয়ে আলাদা করে দেখায়:

  • \!: কমান্ডের হিস্টরি নম্বর
  • \h: হোস্টনেম
  • $kernel_version: $kernel_version ভেরিয়েবল থেকে uname -r কমান্ডের আউটপুট
  • \$?: শেষ কমান্ডের স্ট্যাটাস
ramesh@dev-db ~> kernel_version=$(uname -r) ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> " 473|dev-db|2.6.25-14.fc9.i686|0>

৪. প্রম্পটের ফোরগ্রাউন্ড কালার পরিবর্তন

ইউজারনেম, হোস্ট এবং বর্তমান ডিরেক্টরি ইনফোরমেশনসহ প্রম্পটকে ব্লু কালারে দেখান

$ export PS1="\e[0;34m\u@\h \w> \e[m" [Note: This is for light blue prompt] $ export PS1="\e[1;34m\u@\h \w> \e[m" [Note: This is for dark blue prompt]
  • \e[ – কালার প্রম্পটের শুরু নির্দেশ করে
  • x;ym – কালার কোড নির্দেশ করে। নিচে দেওয়া কালার কোড ভ্যালুগুলো ব্যবহার করুন।
  • \e[m – কালার প্রম্পটের শেষ নির্দেশ করে

কালার কোড টেবিল:

Black 0;30 Blue 0;34 Green 0;32 Cyan 0;36 Red 0;31 Purple 0;35 Brown 0;33 [Note: Replace 0 with 1 for dark color]

কালার পরিবর্তন পারমানেন্ট করতে .bash_profile বা .bashrc-এ নিচের লাইনগুলো যোগ করুন

STARTCOLOR='\e[0;34m'; ENDCOLOR="\e[0m" export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

৫. প্রম্পটের ব্যাকগ্রাউন্ড কালার পরিবর্তন

PS1 প্রম্পটে \e[{code}m নির্দিষ্ট করে ব্যাকগ্রাউন্ড কালার পরিবর্তন করুন নিচের মত।

$ export PS1="\e[47m\u@\h \w> \e[m" [Note: This is for Light Gray background]

ব্যাকগ্রাউন্ড এবং ফোরগ্রাউন্ড কম্বিনেশন

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m" [Note: This is for Light Blue foreground and Light Gray background]

.bash_profile বা .bashrc-এ নিচের লাইনগুলো যোগ করে উপরের ব্যাকগ্রাউন্ড এবং ফোরগ্রাউন্ড কালার পারমানেন্ট করুন।

STARTFGCOLOR='\e[0;34m'; STARTBGCOLOR="\e[47m" ENDCOLOR="\e[0m" export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

নিচের ব্যাকগ্রাউন্ড কালারগুলো ব্যবহার করে খেলুন এবং যেটি আপনার পছন্দ তা বেছে নিন:

  • \e[40m
  • \e[41m
  • \e[42m
  • \e[43m
  • \e[44m
  • \e[45m
  • \e[46m
  • \e[47m

৬. প্রম্পটে একাধিক কালার প্রদর্শন

আপনি একই প্রম্পটে একাধিক কালারও দেখাতে পারেন। .bash_profile-এ নিচের ফাংশনটি যোগ করুন

function prompt { local BLUE="\[\033[0;34m\]" local DARK_BLUE="\[\033[1;34m\]" local RED="\[\033[0;31m\]" local DARK_RED="\[\033[1;31m\]" local NO_COLOR="\[\033[0m\]" case $TERM in xterm*|rxvt*) TITLEBAR='\[\033]0;\u@\h:\w\007\]' ;; *) TITLEBAR="" ;; esac PS1="\u@\h [\t]> " PS1="${TITLEBAR}\ $BLUE\u@\h $RED[\t]>$NO_COLOR " PS2='continue-> ' PS4='$0.$LINENO+ ' }

পরিবর্তনগুলো ইফেক্টিভ করার জন্য রি-লগইন করুন বা .bash_profile সোর্স করুন নিচের মত।

$. ./.bash_profile $ prompt ramesh@dev-db [13:02:13]>

৭. tput ব্যবহার করে প্রম্পট কালার পরিবর্তন

আপনি tput ব্যবহার করে PS1 প্রম্পটের কালারও পরিবর্তন করতে পারেন নিচের মত:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

tput Color Capabilities:

  • tput setab [1-7] – ANSI escape ব্যবহার করে ব্যাকগ্রাউন্ড কালার সেট
  • tput setb [1-7] – ব্যাকগ্রাউন্ড কালার সেট
  • tput setaf [1-7] – ANSI escape ব্যবহার করে ফোরগ্রাউন্ড কালার সেট
  • tput setf [1-7] – ফোরগ্রাউন্ড কালার সেট

tput Text Mode Capabilities:

  • tput bold – বোল্ড মোড সেট
  • tput dim – হাফ-ব্রাইট মোড অন
  • tput smul – আন্ডারলাইন মোড শুরু
  • tput rmul – আন্ডারলাইন মোড শেষ
  • tput rev – রিভার্স মোড অন
  • tput smso – স্ট্যান্ডআউট মোড এন্টার (rxvt-এ বোল্ড)
  • tput rmso – স্ট্যান্ডআউট মোড এক্সিট
  • tput sgr0 – সব অ্যাট্রিবিউট অফ

tput-এর জন্য কালার কোড:

  • 0 – ব্ল্যাক
  • 1 – রেড
  • 2 – গ্রীন
  • 3 – ইয়েলো
  • 4 – ব্লু
  • 5 – মেজেন্টা
  • 6 – সায়ান
  • 7 – হোয়াইট

৮. PS1 ভেরিয়েবলের উপলব্ধ কোডগুলো ব্যবহার করে নিজের প্রম্পট বানান

নিচের কোডগুলো ব্যবহার করে আপনার নিজস্ব পারসোনাল PS1 লিনাক্স প্রম্পট বানান যা ফাংশনাল এবং আপনার পছন্দানুসারি। এই লিস্ট থেকে কোন কোড দৈনন্দিন ব্যবহারের জন্য সবচেয়ে হেল্পফুল? কমেন্ট করে জানান আপনি আপনার লিনাক্স প্রম্পটের জন্য কোন PS1 কোড ব্যবহার করেছেন।

  • \a একটি ASCII বেল ক্যারেক্টার (07)
  • \d "Weekday Month Date" ফরম্যাটে তারিখ (যেমন, "Tue May 26")
  • \D{format} – ফরম্যাটটি strftime(3)-এ পাস করা হয় এবং রেজাল্ট প্রম্পট স্ট্রিংএ ইনসার্ট হয়; খালি ফরম্যাট লোকেল-স্পেসিফিক টাইম রিপ্রেজেন্টেশন দেয়। ব্রেসেস আবশ্যক
  • \e একটি ASCII escape character (033)
  • \h প্রথম পার্ট পর্যন্ত হোস্টনেম
  • \H পুরো হোস্টনেম
  • \j শেল দ্বারা বর্তমানে ম্যানেজ করা জবের সংখ্যা
  • \l শেলের টার্মিনাল ডিভাইস নামের বেসনেম
  • \n নিউলাইন
  • \r ক্যারেজ রিটার্ন
  • \s শেলের নাম, $0-এর বেসনেম (ফাইনাল স্ল্যাশের পরের অংশ)
  • \t ২৪-ঘণ্টার HH:MM:SS ফরম্যাটে বর্তমান সময়
  • \T ১২-ঘণ্টার HH:MM:SS ফরম্যাটে বর্তমান সময়
  • \@ ১২-ঘণ্টার am/pm ফরম্যাটে বর্তমান সময়
  • \A ২৪-ঘণ্টার HH:MM ফরম্যাটে বর্তমান সময়
  • \u বর্তমান ইউজারের ইউজারনেম
  • \v ব্যাশের ভার্সন (যেমন, 2.00)
  • \V ব্যাশের রিলিজ, ভার্সন + প্যাচ লেভেল (যেমন, 2.00.0)
  • \w বর্তমান ওয়ার্কিং ডিরেক্টরি, $HOME টিল্ডা দিয়ে সংক্ষিপ্ত
  • \W বর্তমান ওয়ার্কিং ডিরেক্টরির বেসনেম, $HOME টিল্ডা দিয়ে সংক্ষিপ্ত
  • \! এই কমান্ডের হিস্টরি নম্বর
  • \# এই কমান্ডের কমান্ড নম্বর
  • \$ যদি ইফেক্টিভ UID 0 হয়, তবে #, অন্যথায় $
  • \nnn অক্টাল নম্বর nnn-এ відповদী ক্যারেক্টার
  • \\ একটি ব্যাকস্ল্যাশ
  • \[ নন-প্রিন্টিং ক্যারেক্টার সিকোয়েন্স শুরু, যা টার্মিনাল কন্ট্রোল সিকোয়েন্স প্রম্পটে এম্বেড করতে ব্যবহার হয়
  • \] নন-প্রিন্টিং ক্যারেক্টার সিকোয়েন্স শেষ

৯. PS1 ভেরিয়েবলে ব্যাশ শেল ফাংশন ব্যবহার

আপনি PS1-এ ব্যাশ শেল ফাংশনও আহ্বান করতে পারেন নিচের মত।

ramesh@dev-db ~> function httpdcount { > ps aux | grep httpd | grep -v grep | wc -l > } ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> " ramesh@dev-db [12]> [Note: This displays the total number of running httpd processes]

.bash_profile বা .bashrc-এ নিচের লাইন যোগ করে এই পরিবর্তন পারমানেন্ট করুন:

function httpdcount { ps aux | grep httpd | grep -v grep | wc -l } export PS1='\u@\h [`httpdcount`]> '

১০. PS1 ভেরিয়েবলে শেল স্ক্রিপ্ট ব্যবহার

আপনি PS1 ভেরিয়েবলের ভিতরে শেল স্ক্রিপ্টও আহ্বান করতে পারেন। নিচের উদাহরণে, ~/bin/totalfilesize.sh, যা করেন্ট ডিরেক্টরির টোটাল ফাইলসাইজ ক্যালকুলেট করে, PS1 ভেরিয়েবলের ভিতরে আহ্বান করা হয়েছে।

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh for filesize in $(ls -l . | grep "^-" | awk '{print $5}') do let totalsize=$totalsize+$filesize done echo -n "$totalsize" ramesh@dev-db ~> export PATH=$PATH:~/bin ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> " ramesh@dev-db [534 bytes]> cd /etc/mail ramesh@dev-db [167997 bytes]> [Note: This executes the totalfilesize.sh to display the total file size of the current directory in the PS1 prompt] 


আপনি আপনার PS1-এ কতটুকু কাস্টমাইজেশন করেছেন? আপনার PS1 কি অ্যানজেলिना জুলিকে পিছিয়ে দিতে পারে? কমেন্ট করুন এবং আপনার PS1 প্রম্পট ভ্যালু শেয়ার করুন।

পরামর্শিত পড়াশোনা

Bash Cookbook, by Carl Albing, JP Vossen and Cameron Newham। ব্যাশ একটি খুব পাওয়ারফুল শেল। এই বই আপনাকে ব্যাশ শেল মাস্টার করতে এবং অত্যন্ত প্রোডাক্টিভ হতে সাহায্য করবে। আপনি চাহে সিস্টেম অ্যাডমিন, DBA বা ডেভেলপার হোন, কোনো সময় শেল স্ক্রিপ্ট লিখতে হবে। একজন বুদ্ধিমান সিস্টেম অ্যাডমিন জানে যে একবার শেল-স্ক্রিপ্টিং টেকনিক মাস্টার করলে, আপনি আপনার সার্ভারগুলোকে অটো-পাইলট মোডে রাখতে পারেন শেল-স্ক্রিপ্টগুলোকে গ্রান্ট ওয়ার্ক করিয়ে। অটো-পাইলট মোডে যেতে হলে আপনাকে অবশ্যই এই কুকবুকের উদাহরণগুলো মাস্টার করতে হবে। বাজারে অনেক ব্যাশ শেল বই আছে। কিন্তু এই বই সবচেয়ে উপরে কারণ এখানে অনেক ডিটেইলড উদাহরণ দিয়ে আছে।
 
অ্যাডিশনাল লিনাক্স বুক রিকমেন্ডেশন: 12 Amazing and Essential Linux Books To Enrich Your Brain and Library
 
যদি আপনি এই আর্টিকেলটি পছন্দ করেন, দয়া করে এটিকে del.icio.us and Stumble it.-এ বুকমার্ক করুন।


  1. rbash: রেস্ট্রিক্টেড Bash শেল মাস্টার করুন – কনসেপ্ট, ব্যবহার, এবং প্র্যাক্টিক্যাল উদাহরণ

  2. Bash মাস্টার করুন: টার্মিনাল রঙ এবং প্রম্পট কাস্টোমাইজ করে পান একটি টেইলরড লিনাক্স অভিজ্ঞতা

  3. উইন্ডোজ ১০-এ WSL দিয়ে Bash ইনস্টল ও ব্যবহার: ধাপে ধাপে টিউটোরিয়াল

  4. ব্যাশ শেল ফাংশন মাস্টার করুন: ৬টি প্র্যাক্টিক্যাল উদাহরণ ও টিপস