ইউনিক্সঃ সেল বিল্টইন গাণিতিক ফাংশন (Unix – Shell Builtin Mathematical Functions)

রিদওয়ান বিন শামীম

 

আমাদের টিউটোরিয়ালের বেশিরভাগ অংশে বর্ন সেল নিয়ে কাজ করা হয়েছে কিন্তু আজ এখানে আমরা কর্ন সেলের বিল্টইন গাণিতিক ফাংশনগুলো দেখব।

কর্ন সেল গাণিতিক ফাংশনের আদর্শ সেটে প্রবেশযোগ্যতা সৃষ্টি করে, সি ফাংশন কল সিনট্যাক্স ব্যবহার করে এদের কল করা হয়।

ফাংশন বর্ণনা
abs আদর্শ মান
log ন্যাচারাল লগারিদম
acos আর্ক কোসাইন
sin সাইন
asin আর্ক সাইন
sinh হাইপারবোলিক সাইন
cos কোসাইন
sqrt স্কয়ার রুট
cosh হাইপারবোলিক কোসাইন
tan টেনজেন্ট
exp এক্সপোনেন্সিয়াল ফাংশন
tanh হাইপারবোলিক টেনজেন্ট
int ফ্লোটিং পয়েন্ট নাম্বারের পূর্ণসংখ্যা অংশ

 

 

ইউনিক্স কুইক গাইড (Unix – Quick Guide)

রিদওয়ান বিন শামীম

 

ইউনিক্স কি

ইউনিক্স অপারেটিং সিস্টেম হল প্রোগ্রামের একটি সেট যা কম্পিউটার ও ব্যবহারকারীর মধ্যে লিঙ্ক হিসেবে কাজ করে।

  • ১৯৬৯ সালে এটিএন্ডটি কর্মীদের দ্বারা বেল ল্যাবরেটরিতে প্রথম ইউনিক্স ডেভেলাপ করা হয়,
  • ইউনিক্সের বিভিন্ন ভার্সন পাওয়া যায়, Solaris Unix, AIX, HP Unix এবং BSD সহ লিনাক্সও অনেকটা ইউনিক্সের মত, যেটি ফ্রী ওএস।
  • ইউনিক্স কম্পিউটার একসাথে কয়েকজন ব্যবহারকারী ব্যবহার করতে পারেন।
  • ইউনিক্স কম্পিউটারে একজন ব্যবহারকারী একসাথে কয়েকটি প্রোগ্রাম চালু রাখতে পারেন।

 

লগইন

login কম্যান্ড দিয়ে আমরা সিস্টেমে লগইন করতে পারি,


login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

 

লগআউটের জন্য

কম্যান্ড প্রম্পটে logout কম্যান্ড টাইপ করলে সিস্টেম সবকিছু পরিষ্কার করে যোগাযোগ বিচ্ছিন্ন করে দেবে।

 

ফাইল ব্যবস্থাপনা

ইউনিক্সে তিন ধরণের ফাইল আছে,

  • সাধারণ ফাইল,
  • ডিরেক্টরি,
  • স্পেশাল ফাইল।

 

ফাইলনেমের সাবস্টিটিউশন

কম্যান্ড
ls -[l]
ls -[l]a
~
~user
?
*

 

ফাইলনেমের মেনিপুলেশন

কম্যান্ড
cat filename
cp source destination
mv oldname newname
rm filename
chmod nnn filename
touch filename
ln [-s] oldname newname
ls -F

 

ডিরেক্টরি ম্যানেজমেন্ট

কম্যান্ড
mkdir dirname
rmdir dirname
cd dirname
cd –
cd ~
pwd

 

এনভায়রনমেন্ট সেটআপ

PS1ও PS2 চলক, এস্কেপ ক্যারেক্টার ও এনভায়রনমেন্ট চলক নিয়ে এনভায়রনমেন্ট সেটআপ গঠিত হয়।

এস্কেপ ক্যারেক্টারের সিকোয়েন্স,

 

এস্কেপ সিকোয়েন্স
\t
\d
\n
\s
\W
\w
\u
\h
\#
\$

 

এনভায়রনমেন্ট চলক

চলক
DISPLAY
HOME
IFS
LANG
LD_LIBRARY_PATH
PATH
PWD
RANDOM
SHLVL
TERM
TZ
UID

 

ফিল্টার ও পাইপ

কম্যান্ড
wc [-l]
tail [-n]
sort [-n]
pr -t
grep “pattern” filename
pg or more

 

স্পেশাল চলক

চলক
$0
$n
$#
$*
$@
$?
$$
$!

 

সেল বেসিক অপারেটর

সেল বেসিক অপারেটরঃ তিন ধরণের হয়,

  • এরিথমেটিক অপারেটর,
  • রিলেসনাল অপারেটর,
  • বুলিয়েন অপারেটর

 

এরিথমেটিক অপারেটর

অপারেটর
+
*
/
%
=
==
!=

 

রিলেসনাল অপারেটর

অপারেটর
-eq
-ne
-gt
-lt
-ge
-le

 

বুলিয়েন অপারেটর

অপারেটর
!
-o
-a

 

স্ট্রিং অপারেটর

অপারেটর
=
!=
-z
-n
str

 

ফাইল টেস্ট অপারেটর

অপারেটর
-b file
-c file
-d file
-f file
-g file
-k file
-p file
-t file
-u file
-r file
-w file
-x file
-s file
-e file

 

সেল ডিসিশন মেকিং

if…fi বিবৃতি


if [ expression ]
then
   Statement(s) to be executed if expression is true
fi

 

if…else…fi বিবৃতি


if [ expression ]
then
   Statement(s) to be executed if expression is true
else
   Statement(s) to be executed if expression is not true
fi

 

if…elif…fi বিবৃতি


if [ expression 1 ]
then
   Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
   Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
   Statement(s) to be executed if expression 3 is true
else
   Statement(s) to be executed if no expression is true
fi

 

case…esac বিবৃতি


case word in
  pattern1)
     Statement(s) to be executed if pattern1 matches
     ;;
  pattern2)
     Statement(s) to be executed if pattern2 matches
     ;;
  pattern3)
     Statement(s) to be executed if pattern3 matches
     ;;
esac

 

সেল লুপ টাইপ

while লুপ


while command
do
   Statement(s) to be executed if command is true
done

 

for লুপ


for var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

 

until লুপ


until command
do
   Statement(s) to be executed until command is true
done

 

select লুপ


select var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

 

 

সেল লুপ কন্ট্রোল

ব্রেক স্টেটমেন্টের জন্য


break[n]

 

আর কন্টিনিউ স্টেটমেন্টের জন্য


continue[n]

 

সেল সাবস্টিটিউশনের জন্য

কম্যান্ড সাবস্টিটিউশন


`command`

 

আর সম্ভাব্য চলক সাবস্টিটিউশন

সাবস্টিটিউশন ফর্ম
${var}
${var:-word}
${var:=word}
${var:?message}
${var:+word}

 

রিডাইরেকশন কম্যান্ড

কম্যান্ড
pgm > file
pgm < file
pgm >> file
n > file
n >> file
n >& m
n <& m
<< tag
|

 

ইউনিক্স – কিছু প্রয়োজনীয় কমান্ড (Unix – Useful Commands)

রিদওয়ান বিন শামীম

 

এই কুইক গাইডে কম্যান্ড, সিনট্যাক্স ও সংক্ষিপ্ত বিবরণ তুলে ধরা হবে,এরচেয়ে বিস্তারিত জানতে হলে যে কম্যান্ড ব্যবহার করতে হবে তা হল,


$man command

 

যাই হোক, এখানে কুইক গাইডটি দেয়া হল।

ফাইল এবং ডিরেক্টরির জন্য

ডিরেক্টরি তৈরি ও ফাইল নিয়ন্ত্রণ করার জন্য যেসব কম্যান্ড ব্যবহার করা হয় তা হল,

 

কম্যান্ড বর্ণনা
cat ফাইল কন্টেন্ট প্রদর্শন করে
cd ডিরেক্টরিকে dirname তে রূপান্তরিত করে
chgrp ফাইল গ্রুপ পরিবর্তন করে
chmod পারমিশন পরিবর্তন করে
cp সোর্স ফাইলকে গন্তব্যে কপি করে
file ফাইল টাইপ নির্ধারণ করে
find ফাইল খোঁজে
grep বরাবরের ভুমিকার জন্য ফাইল খোঁজে
head প্রথম কিছু লাইনকে একটি ফাইলে দেখায়
ln পুরনো নামে সফট লিঙ্ক তৈরি করে
ls ফাইল টাইপ সম্পর্কিত তথ্য প্রদর্শন করে
mkdir Dirname শ্রেণীর নতুন ডিরেক্টরি তৈরি করে
more paginated ফর্মে ডাটা প্রদর্শন করে
mv oldname কে newnameএ রূপান্তরিত করে
pwd কারেন্ট ওয়ারকিং ডিরেক্টরিকে প্রিন্ট করে
rm ফাইলনেম রিমুভ করে
rmdir শূন্য ডিরেক্টরি মুছে ফেলে .
tail ফাইলের শেষ কিছু লাইন মুছে ফেলে
touch কোনও ফাইলের এক্সেস ও মডিফিকেশন টাইম আপডেট করে .

 

ডাটাকে নিপুনভাবে ব্যবহার করার জন্য

 

কম্যান্ড বর্ণনা
awk প্যাটার্ন স্ক্যান ও ভাষা প্রক্রিয়া করণ
cmp দুই ফাইলের উপাদান তুলনা করা
comm সর্টেড ডাটা তুলনা করা
cut কোনও ফাইলের প্রতি লাইনের নির্ধারিত অংশ কেটে ফেলা
diff ডিফারেন্সিয়াল ফাইল কম্পারেটর
expand ট্যাবকে স্পেসে ছড়িয়ে দেয়া
join ফাইলকে কোনও কমন ফিল্ডে সংযুক্ত করা
perl ডাটা মেনিপুলেশন ল্যাঙ্গুয়েজ
sed স্ট্রিম টেক্সট এডিটর
sort সর্ট ফাইল ডাটা
split ফাইলকে ছোট ফাইলে বিভক্ত করা
tr ক্যারেক্টারকে অনুবাদ করা
uniq ফাইলের ভেতরের পুনরাবৃত্তি হওয়া লাইন রিপোর্ট করা
wc শব্দ, লাইন ও ক্যারেকটার গোনা
vi ভিআই টেক্সট এডিটর ওপেন করা
vim ভিআইএম টেক্সট এডিটর ওপেন করা
fmt সিম্পল টেক্সট ফরমেটর
spell ভুল বানানের সন্ধান করা
ispell ভুল বানানের সন্ধান করা
ispell ভুল বানানের সন্ধান করা
emacs GNU প্রকল্প Emacs
ex, edit লাইন এডিটর
emacs GNU প্রকল্প Emacs
emacs GNU প্রকল্প Emacs

 

কম্প্রেসড ফাইল

জায়গা বাঁচানোর জন্য ফাইলকে কম্প্রেস করা হতে পারে। কম্প্রেসড ফাইল তৈরি ও নিরীক্ষণের জন্য কোডঃ

 

কম্যান্ড বর্ণনা
compress ফাইলকে কম্প্রেস করা
gunzip জিপ ফাইলকে আনকম্প্রেস করা
gzip GNU বিকল্প কম্প্রেসন পদ্ধতি
uncompress ফাইল আনকম্প্রেস করা
unzip জিপ আর্কাইভে কম্প্রেসড ফাইলকে লিস্ট, টেস্ট ও এক্সট্রাক্ট করা
zcat কম্প্রেসড ফাইলকে ক্যাটাগরিতে আবদ্ধ করা
zcmp কম্প্রেসড ফাইল তুলনা করা
zdiff কম্প্রেসড ফাইল তুলনা করা
zmore কমপ্রেসড টেক্সটের crt এর জন্য File perusal filter

 

তথ্য পাওয়ার জন্য

 

কম্যান্ড বর্ণনা
apropos কিওয়ার্ডের মাধ্যমে কম্যান্ড নির্ধারণ
info কম্যান্ড ইনফরমেশন পেজকে অনলাইনে দেখানো
man ম্যানুয়াল পেজকে অনলাইনে দেখানো
whatis সম্পূর্ণ শব্দের জন্য whatis ডাটাবেসে সন্ধান
yelp GNOME হেল্প ভিউয়ার

 

নেটওয়ার্ক কমুনিকেশন

লোকাল ইউনিক্স হোষ্ট থেকে কোনও ফাইল প্রেরণ বা গ্রহণের জন্য যেসব কম্যান্ড ব্যবহৃত হয় সেগুলো হল,

 

কম্যান্ড বর্ণনা
ftp ফাইল ট্রান্সফার প্রোগ্রাম
rcp রিমোট ফাইল কপি
rlogin UNIX hostএ রিমোট লগইন
rsh রিমোট সেল
tftp ট্রিভিয়াল ফাইল ট্রান্সফার প্রোগ্রাম
telnet অন্য হোষ্টের সাথে টার্মিনাল যোগাযোগ স্থাপন করা
ssh সেল টার্মিনাল বা কম্যান্ড কানেকশন নিরাপদ করা
scp সেল রিমোট ফাইল কপি নিরাপদ করা
sftp সেল ফাইল ট্রান্সফার প্রোগ্রামকে নিরাপদ করা

 

নিরাপত্তার কারণে কিছু কিছু কম্পিউটারে কিছু কম্যান্ড রহিত থাকতে পারে।

 

ব্যবহারকারীদের মধ্যে ম্যাসেজ

 

কম্যান্ড বর্ণনা
evolution লিনাক্সে GUI মেইল হ্যান্ডেলিনের টুল
mail মেইল প্রেরন ও পঠন প্রোগ্রাম
mesg ম্যাসেজ অনুমোদন বা বাতিলের প্রোগ্রাম
parcel অন্য ব্যবহারকারীর কাছে ফাইল প্রেরণের প্রোগ্রাম
pine Vdu-ভিত্তিক মেইল সুবিধা
talk অন্য ব্যবহারকারীর সাথে কথা বলা
write অন্য ব্যবহারকারীর কাছে ম্যাসেজ লিখা

 

প্রোগ্রামিং সম্পর্কিত কম্যান্ড

 

কম্যান্ড বর্ণনা
dbx Sun debugger
gdb GNU debugger
make প্রোগ্রাম গ্রুপ নিয়ন্ত্রণ ও সমন্বয়
nm প্রোগ্রামের নামের লিস্ট করা
size প্রোগ্রামের আকার মুদ্রিত করা
strip symbol table মুছা ও bits কে সজ্জিত করা
cb C program সজ্জিতকরন
cc SPARCসিস্টেমের জন্য ANSI C compiler
ctrace C program debugger
gcc GNU ANSI C Compiler
indent C program source ইন্ডেন্ট ও ফরম্যাট করা
bc Interactive arithmetic language processor
gcl GNU Common Lisp
perl General purpose language
php Web page embedded language
py Python language interpreter
asp Web page embedded language
CC C++ compiler for Suns SPARC systems
g++ GNU C++ Compiler
javac JAVA compiler
appletvieweir JAVA applet viewer
netbeans লিনাক্সে জাভা ভিত্তিক উন্নয়ন পরিবেশ তৈরি
sqlplus Oracle SQL interpreter রান করানো
sqlldr Oracle SQL data loader রান করানো
mysql mysql SQL interpreter রান করানো

 

Misc কম্যান্ড

এটি সিস্টেমের তথ্যকে তালিকাবদ্ধ বা অলটার করে,

কম্যান্ড বর্ণনা
chfn আঙ্গুল সঞ্চালনের তথ্য পরিবর্তন
chgrp ফাইলের গ্রুপ ওউনারশিপ তথ্য পরিবর্তন
chown ওউনার পরিবর্তন
date তারিখ মুদ্রণ
determin স্বয়ংক্রিয়ভাবে টার্মিনাল টাইপ খুঁজে পাওয়া
du ডিস্ক ইউসেজ মুদ্রণ
echo আদর্শ প্রকরণের Echo arguments
exit সিস্টেম থামিয়ে দেয়া
finger logged-in users এর তথ্য মুদ্রণ
groupadd user group তৈরি করা
groups group memberships প্রদর্শন করা
homequota quota এবং file usage মুদ্রণ
iostat I/O statistics রিপোর্ট করা
kill প্রক্রিয়ার সিগন্যাল প্রেরণ করা
last সর্বশেষ লগইন তথ্য
logout ইউনিক্স থেকে বেরিয়ে যাওয়া
lun নাম বা লগইন আইডি তালিকা করা
netstat নেটওয়ার্ক স্ট্যাটাস দেখানো
passwd ইউজার পাসওয়ার্ড পরিবর্তন
passwd লগইন পাসওয়ার্ড পরিবর্তন
printenv সেল চলকের মান প্রদর্শন
ps চলতি প্রক্রিয়ার স্ট্যাটাস দেখানো
ps চলতি প্রক্রিয়ার স্ট্যাটাস মুদ্রণ
quota -v ডিস্ক ইউসেজ ও সীমাবদ্ধতা প্রদর্শন
reset টার্মিনাল মোড রিসেট করা
script টার্মিনাল সেশনের স্ক্রিপ্ট রাখা
script কম্যান্ড বা প্রসেসের আউটপুট সংরক্ষণ
setenv পরিবেশগত চলক সেট করা
stty টার্মিনাল অপশন সেট করা
time কম্যান্ডের সময়
top সিস্টেম প্রসেস প্রদর্শন
tset টার্মিনাল মোড সেট করা
tty কারেন্ট টার্মিনাল নেম মুদ্রণ
umask সরাসরি দৃশ্যমান ফাইলের অনুমতি প্রদান
uname কারেন্ট সিস্টেমের নাম প্রদর্শন
uptime সিস্টেমকে আপটাইম করা
useradd ইউজার একাউন্ট করা
users লগইনকৃত ইউজারদের নাম মুদ্রিত করা
vmstat ভারচুয়াল মেমরির পরিসংখ্যান বিন্যাস করা
w লগইনকৃত ইউজারদের কর্মকাণ্ড প্রদর্শন
who লগইনকৃত ইউজারদের তালিকা করা

 

ইউনিক্সঃ সিগন্যাল ও ট্র্যাপ (Unix – Signals and Traps)

রিদওয়ান বিন শামীম

 

সিগন্যাল হল সফটওয়ারের সংকেত যা নির্দেশ করে, লক্ষ্য করার মত কিছু ঘটেছে। এটি যেকোনো রকমের, ব্যবহারকারীর কোনও চাহিদা থেকে শুরু করে মেমোরির অনুমোদিত প্রবেশযোগ্যতা সংক্রান্ত, কোনও প্রোগ্রাম চাহিদা পূরণে সক্ষম নয় এমন যেকোনো কারণে সিগন্যাল দেখানো হতে পারে। এমন কয়েকটি কমন সিগন্যাল যা আমরা সচরাচর দেখি বা ব্যবহার করি, নিচের তালিকায় দেয়া হল।

 

সিগন্যালের নাম সিগন্যাল নাম্বার বিবরণ
SIGHUP 1 টার্মিনালে সমস্যা বা প্রক্রিয়ার সমাপ্তি
SIGINT 2 ইউজার ইন্টারাপ্ট ম্যাসেজ পাঠালে (Ctrl + C).
SIGQUIT 3 ইউজার সমাপ্তি ম্যাসেজ পাঠালে (Ctrl + D).
SIGFPE 8 ভুল গাণিতিক প্রচেষ্টা হলে
SIGKILL 9 প্রক্রিয়া সমাপ্তি ও কোনও ধরণের পরিষ্কার বা ক্লিনআপ বন্ধ
SIGALRM 14 এলারম ক্লক সিগন্যাল
SIGTERM 15 সফটওয়ার টারমিনেশন সিগন্যাল

 

সিগন্যালের তালিকা

kill -l কম্যান্ডের মাধ্যমে সাপোর্টেড সব সিগন্যাল তালিকাবদ্ধভাবে আমরা দেখতে পারি।


$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

সিগন্যালের মূল তালিকা সোলারিস, এইচপি –ইউএক্স ও লিনাক্সের মধ্যে কিছু ব্যতিক্রম হয়।

 

ডিফল্ট একশন

সিগন্যালের ডিফল্ট কিছু একশন হল,

  • প্রক্রিয়া টারমিনেট করে,
  • সিগন্যাল অগ্রাহ্য করে,
  • প্রক্রিয়ায় মেমোরি ইমেজ সমৃদ্ধ কোর ফাইল তৈরি করে,
  • প্রক্রিয়া থামায়,
  • থামানো প্রক্রিয়া চালু করে।

 

সিগন্যাল প্রেরণ করা

স্ক্রিপ্ট লেখার সময় CONTROL-C অথবা INTERRUPT কী চাপা সিগন্যাল প্রেরণের কমন উপায়, এছাড়াও kill কম্যান্ড ব্যবহার করে এটি করা যায়,


$ kill -signal pid

 

এখানে সিগন্যাল হয় নাম অথবা নাম্বার(সিগন্যালের) আর pid হল প্রসেস আইডি যাতে সিগন্যাল পাঠানো হবে।


$ kill -1 1001

 

process ID 1001 তে প্রক্রিয়াধীন ক্ষেত্রে kill signal পাঠাতে কম্যান্ড,


$ kill -9 1001

 

সিগন্যাল ট্র্যাপ করা

ট্র্যাপ কম্যান্ডের জন্য যে সিনট্যাক্স ব্যবহার করা যায় তা হল,


$ trap commands signals

 

সেল স্ক্রিপ্টে ট্র্যাপের ব্যবহার হয় এসব কারণে-

  • টেম্পোরারি ফাইল ক্লিনআপে
  • সিগন্যাল ইগনোর করতে

 

টেম্পোরারি ফাইল ক্লিনআপ করা

কিছু ফাইল রিমোভ করে এক্সিট করতে নিচের কম্যান্ড ব্যবহার করতে পারি,


$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2

 

স্পেসিফাইড ফাইল মুছার জন্য ট্র্যাপ মডিফাই করতে সিগন্যাল লিস্টে সিগন্যাল নাম্বার 1 যোগ করতে পারি,


$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2

 

সিগন্যাল এক ও দুই রিসিভ করার ক্ষেত্রে সাবস্টিটিউশন ঘটাতে চাইলে কম্যান্ডকে সিঙ্গেল কোটের মধ্যে লিখতে পারি,


$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2

 

সিগন্যাল ইগনোর করতে

রিসিভের সময় সিগন্যাল ইগনোর করতে কম্যান্ড,


$ trap '' 2

 

মাল্টিপল সিগন্যাল ইগনোর করতে,


$ trap '' 1 2 3 15

 

প্রথম আর্গুমেন্টকে সিগন্যালের জন্য স্পেসিফাইড হতে হবে, যার নিজস্ব মানে থাকতে হবে,


$ trap 2

 

ট্র্যাপ রিসেট করতে কম্যান্ড ব্যবহার করা যায়,


$ trap 1 2

যা কিনা প্রথম আর্গুমেন্টের উপর ভিত্তি করে করতে হবে।

 

ইউনিক্সঃ সিস্টেম লগিং (Unix – System Logging)

রিদওয়ান বিন শামীম

 

ইউনিক্স সিস্টেমের খুব শক্তিশালী ও স্থিতিস্থাপক লগিং সিস্টেম আছে যার মাধ্যমে আমাদের কল্পনাযোগ্য সব কিছুই আমরা রেকর্ড করে রাখতে ও পরবর্তীতে ব্যবহার করতে পারি।

ইউনিক্সের বেশিরভাগ ভার্সন syslog নামক জেনারেল পারপাস লগিং ফ্যাসিলিটি দিয়ে থাকে। স্বতন্ত্র প্রোগ্রাম যাদের তথ্য লগড অবস্থায় থাকতে হয় তারা এটিতে তথ্য প্রেরণ করে থাকে। এই সিস্টেম একটি কেন্দ্রীভূত সিস্টেম লগড প্রসেস ব্যবহার করে যা /etc/syslogd বা /etc/syslog নামক প্রোগ্রাম সম্পন্ন করে। প্রোগ্রাম তাদের লগ এন্ট্রিকে syslogd এ পাঠায় যা /etc/syslogd.conf বা /etc/syslog ফাইল কনফিগার সংক্রান্ত কাজগুলো করে। কোনও মিল পাওয়া গেলে কাঙ্খিত লগ ফাইলে লগ ম্যাসেজ লিখে রাখে।

 

মূলত চার ধরণের syslog টার্ম আছে,

টার্ম বর্ণনা
Facility আইডেন্টিফাইয়ার লগ মেসেজে সাবমিট হওয়া এপ্লিকেশন বা প্রোগ্রামের বিবরণ দেয়
Priority ম্যাসেজের গুরুত্বের পরিমাপক
Selector এক বা একাধিক ফ্যাসিলিটি বা লেভেলের সমন্বয়
Action ইনকামিং ম্যাসেজ যা সিলেক্টরের সাথে মিলে যায়, তার ক্ষেত্রে ঘটে।

 

সিসলগ ফ্যাসিলিটিজ

সিলেক্টরের জন্য প্রাপ্ত সুবিধাগুলো নিচে দেয়া হল, অবশ্য সব ইউনিক্স ভার্সন সবগুলো সুবিধা পায় না।

 

প্রায়োরিটি বর্ণনা
emerg জরুরী অবস্থা
alert সংশোধন করতে হবে এমন অবস্থা
crit জটিল পরিস্থিতি, যেমন হার্ডওয়ারে ক্রুটি
err সাধারণ এরর
warning সতর্কবাণী
notice এরর না, তবু সাবধানে কাজ করতে হবে
info তথ্যমূলক ম্যাসেজ
debug প্রোগ্রাম ডিবাগের ম্যাসেজ
none নট টু লগ ম্যাসেজ নির্ধারণের জন্য সিউডো লেভেল ব্যবহার করা

 

/etc/syslog.conf ফাইল

ম্যাসেজ লগড থাকার সময় এই ফাইল কন্ট্রোল করে।


*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice           /var/log/messages
lpr.info                     /var/log/lpr.log
mail.*                       /var/log/mail.log
ftp.*                        /var/log/ftp.log
auth.*                       @prep.ai.mit.edu
auth.*                       root,amrood
netinfo.err                  /var/log/netinfo.log
install.*                    /var/log/install.log
*.emerg                      *
*.alert                      |program_name
mark.*                       /dev/console

 

ফাইলের প্রতিটা লাইনের দুটি করে অংশ আছে,

  • ম্যাসেজ সিলেক্টর যা নির্ণয় করে কোন ধরণের ম্যাসেজ লগড হবে
  • একশন ফিল্ড যা ঠিক করে ম্যাসেজ নিয়ে ঠিক কি করা হবে।

উপরের কনফিগারেশনের কয়েকটি গুরুত্বপূর্ণ পয়েন্ট আছে,

  • ম্যাসেজ সিলেক্টরের দুটি পার্ট আছে, ফ্যাসিলিটি আর প্রাইওরিটি
  • kern.debug নামের ম্যাসেজ সিলেক্টর ডিবাগের চেয়ে বড় প্রাইওরিটি নির্বাচন করে।
  • ফ্যাসিলিটি আর প্রাইওরিটির স্থলে তারকাচিহ্ন সবগুলোকেই নির্দেশ করে।
  • মাল্টিপল ফ্যাসিলিটি নির্ধারণ করতে কমা ও ব্যবহার করা যায়।

 

লগিং একশন

পাঁচটি একশনের যে কোনও একটি একশন ফিল্ডে প্রযোজ্য হবে,

  • কোনও ফাইল বা ডিভাইসে লগ ম্যাসেজ
  • ইউজারের কাছে ম্যাসেজ পাঠানো
  • সব ইউজারের কাছে ম্যাসেজ পাঠানো
  • প্রোগ্রামে ম্যাসেজ পাইপ করা
  • অন্য হোষ্টের syslog এ ম্যাসেজ প্রেরণ

 

লগার কম্যান্ড

লগার কম্যান্ডের ফরম্যাট হল,


logger[-i][-f file][-p priority][-t tag][message]...

 

 

এর প্যারামিটারগুলো এরকম,

 

প্যারামিটার
-f filename
-i
-p priority
-t tag
message

 

লগ রোটেশন

লগ রোটেশনের জন্য newsyslog বা logrotate টুল ব্যবহার করা যায়।

 

গুরুত্বপূর্ণ লগ লোকেশন

কিছু গুরুত্বপূর্ণ এপ্লিকেশন ও তাদের লগ ডিরেক্টরি নিচে দেয়া হল,

 

এপ্লিকেশন ডিরেক্টরি
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/

 

ইউনিক্সঃ সিস্টেম পারফর্মেন্স (Unix – System Performance)

রিদওয়ান বিন শামীম

 

আজকের টিউটোরিয়ালের উদ্দেশ্য হল সিস্টেমের পারফর্মেন্স পরিমাপকের সাথে ইউনিক্স সিস্টেমের পারফর্মেন্স পরিমাপ,পর্যবেক্ষণ ও নিয়ন্ত্রণের কিছু ফ্রী টুলসের পরিচয় করানো, এবং ইউনিক্স আবহে সিস্টেমের পারফর্মেন্স বিষয়ক সমস্যা ও তার সমাধান সম্পর্কে দিকনির্দেশনা দেয়া।

ইউনিক্সে কিছু গুরুত্বপূর্ণ রিসোর্স আছে যাদেরকে পর্যবেক্ষণ করা ও নিয়ন্ত্রণে রাখা জরুরী।

  • সিপিইউ
  • মেমোরি
  • ডিস্ক স্পেস
  • কমুনিকেশন্স লাইন
  • আই/ও টাইম
  • নেটওয়ার্ক টাইম
  • এপ্লিকেশন প্রোগ্রামস

পারফরমেন্সের উপাদান

পাঁচটি প্রধান উপাদান পারফরমেন্সে অবদান রাখে,

উপাদান বর্ণনা
User state CPU ইউজার স্টেটে সিপিইউ দ্বারা ব্যয়িত মত সময়। লাইব্রেরী সেলে ব্যয়িত সময় এর অন্তর্ভুক্ত কিন্তু কার্নেল বিষয়ক সময় এর অন্তর্ভুক্ত নয়
System state CPU সিস্টেম স্টেটে সিপিইউ দ্বারা ব্যয়িত মত সময়।
I/O Time and Network Time I/O requests ও ডাটা স্থানান্তরের জন্য ব্যয়িত সময়
Virtual Memory Performance কনট্যাক্স switching ও swapping এর অন্তর্গত।
Application Program অন্য প্রোগ্রাম চলার জন্য ব্যয়িত সময় – যখন সিস্টেম এপ্লিকেশনকে সময় দিচ্ছে না, সিপিইউ অন্য কোনও এপ্লিকেশনের জন্য বরাদ্দ আছে।

 

পারফরমেন্স টুল

 

কম্যান্ড বর্ণনা
nice/renice পরিবর্তিত প্রাধান্যসহ প্রোগ্রাম চালনা করা
netstat নেটওয়ার্ক কানেকশন, রাউটিং টেবিল, ইন্টারফেস পরিসংখ্যান, মাল্টিকাস্ট মেম্বারশিপ মুদ্রিত করা
time কম্যান্ড ও সিম্পল রিসোর্স টাইম
uptime সিস্টেম লোড এভারেজ
ps সাম্প্রতিক প্রক্রিয়ার স্নেপশট রিপোর্ট
vmstat ভার্চুয়াল মেমোরি পরিসংখ্যানের রিপোর্ট
gprof কল গ্রাফ প্রোফাইলের ডাটা প্রদর্শন
prof প্রফাইলিং প্রক্রিয়াজাত করা
top সিস্টেম টাস্ক প্রদর্শন করা

 

এখানে বর্ণিত সকল কম্যান্ডের বিস্তারিত সিনট্যাক্সের জন্য মেনপেজ হেল্প দেখা যেতে পারে।

 

ইউনিক্সঃ ইউজার এডমিনিস্ট্রেশন (Unix – User Administration)

রিদওয়ান বিন শামীম

 

ইউনিক্স সিস্টেমে তিন ধরণের একাউন্ট দেখা যায়,

  • রুট একাউন্ট,
  • সিস্টেম একাউন্ট
  • ইউজার একাউন্ট

 

ইউজার এবং গ্রুপ ব্যবস্থাপনা

তিন ধরণের ইউজার এডমিনিস্ট্রেশন ফাইল দেখা যায়,

  • /etc/passwd: এটি ইউজার একাউন্ট ও পাসওয়ার্ড সংরক্ষণ করে।
  • /etc/shadow: এটি কোরেসপনডিং একাউন্টের এনক্রিপটেড পাসওয়ার্ড সংরক্ষণ করে
  • /etc/group: এটি প্রত্যেক একাউন্টের গ্রুপ ইনফরমেশন সংরক্ষণ করে

 

ইউনিক্সের একাউন্ট ও গ্রুপ তৈরি ও ব্যবস্থাপনা সংক্রান্ত কম্যান্ডের কয়েকটি নিচের ছকে দেয়া হল,

কম্যান্ড বিবরণ
useradd সিস্টেমে একাউন্ট যোগ করে
usermod একাউন্ট এট্রিবিউট মডিফাই করে
userdel সিস্টেম থেকে একাউন্ট ডিলিট করে .
groupadd সিস্টেমে গ্রুপ যোগ করে
groupmod গ্রুপ এট্রিবিউট মডিফাই করে
groupdel সিস্টেম থেকে গ্রুপ রিমুভ করে .

 

গ্রুপ তৈরি করা

নতুন গ্রুপ তৈরির সিনট্যাক্স হল,


groupadd[-g gid[-o]][-r][-f] groupname

 

এর প্যারামিটারগুলো হল,

-g GID
-o
-r
-f
groupname

 

নিচের উদাহরণে ডিফল্ট ভ্যালুতে developers গ্রুপ তৈরি করা হয়েছে।


$ groupadd developers

 

গ্রুপ মডিফাই করা

groupmod সিনট্যাক্স ব্যবহার করে গ্রুপ মডিফাই করা যায়।


$ groupmod-n new_modified_group_name old_group_name

 

developers_2 গ্রুপনেমকে developer গ্রুপনেমে পরিবর্তনের জন্য,


$ groupmod-n developer developer_2

 

financial GID গ্রুপনেমকে 545 গ্রুপনেমে পরিবর্তনের জন্য,


$ groupmod-g545 developer

 

গ্রুপ ডিলিট করার জন্য

গ্রুপ ডিলিট করার জন্য কম্যান্ড,


$ groupdel developer

 

একাউন্ট তৈরি করা

একাউন্ট তৈরি করার জন্য সিনট্যাক্স,


useradd-d homedir-g groupname-m-s shell-u userid accountname

 

এর প্যারামিটারগুলো হল,

Option
-d homedir
-g groupname
-m
-s shell
-u userid
accountname

 

mcmohd নামের একাউন্ট যার হোম ডিরেক্টরি /home/mcmohd, এবং developersনামের গ্রুপ,এটিকে ব্যবহারকারী কর্ন সেলের মাধ্যমে এসাইন করতে পারে, নিচে পুরো উদাহরণটি দেয়া হল,


$ useradd-d/home/mcmohd-g developers-s/bin/ksh mcmohd

 

একাউন্ট তৈরি হয়ে গেলে passwd কম্যান্ড ব্যবহার করে আমরা এতে পাসওয়ার্ড বসাতে পারি,


$ passwd mcmohd20
Changing password for user mcmohd20.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

 

একাউন্ট মডিফাই করা

usermod কম্যান্ড ব্যবহার করে একাউন্ট মডিফাই করা সম্ভব।


$ usermod-d/home/mcmohd20-m-l mcmohd mcmohd20

 

একাউন্ট ডিলিট করা

userdel কম্যান্ড ব্যবহার করে আমরা একাউন্ট ডিলিট করতে পারি।


$ userdel-r mcmohd20

 

যদি আমরা হোম ডিরেক্টরিকে ব্যাকআপের জন্য রাখতে চাই তবে -r অপশন বর্জন করতে হবে।

 

ইউনিক্সঃ ফাইল সিস্টেম বেসিক (Unix – File System Basics)

রিদওয়ান বিন শামীম

 

ফাইল সিস্টেম হল পার্টিশন বা ডিস্কে ফাইলের লজিকাল কালেকশন। পার্টিশন ইনফরমেশনের কন্টেইনার হিসেবে কাজ করে এবং প্রয়োজনে পুরো হার্ডডিস্ক স্পান করতে পারে ।

হার্ডড্রাইভে অনেকগুলো পার্টিশন থাকতে পারে যেগুলো মূলত একটিমাত্র ফাইল সিস্টেম ফলো করবে। প্রতিটা পার্টিশনের জন্য একটিমাত্র ফাইল সিস্টেম এটির সুষ্ঠু ব্যবস্থাপনা ও রক্ষণাবেক্ষণ নিশ্চিত করে।

ইউনিক্সে সব উপাদানকে ফাইল হিসেবে গণ্য করা হয়, এমনকি ডিভিডি রম, ইউএসবি ডিভাইস বা ফ্লপি ড্রাইভের মত ফিজিকাল ডিভাইসকেও।

 

ডিরেক্টরি কাঠামো

ইউনিক্স ক্রমবিন্যাসগত কাঠামো মেনে চলে, root (/)কে ফাইল সিস্টেমের ভিত্তি ধরে, অন্য সব ডিরেক্টরি সেটি থেকে ছড়িয়ে পড়ে।

ইউনিক্স ফাইল সিস্টেম ফাইল ও ডিরেক্টরির কালেকশন যেটির মূলত নিচের বৈশিষ্ট্যগুলি থাকে।

  • এটির root directory (/) থাকে যা অন্য ফাইল ও ডিরেক্টরিগুলোকে ধারণ করে,
  • প্রত্যেকটি ফাইল ও ডিরেক্টরি এর স্বতন্ত্র নাম দ্বারা সনাক্ত হয়,
  • কনভেনশন অনুসারে root directoryএর inode number থাকে ২ এর , আর ost+found directoryএর inode number থাকে ৩ এর।
  • ফাইল সিস্টেমগুলো স্বতন্ত্র, এদের পারস্পরিক কোনও নির্ভরতা নেই।

ডিরেক্টরিগুলোর নির্ধারিত কাজ থাকে, ইউনিক্সের প্রধান ভার্সনগুলোয় যে ডিরেক্টরিগুলোকে সাধারণত দেখা যায়,

 

ডিরেক্টরি
/
/bin
/dev
/etc
/lib
/boot
/home
/mnt
/proc
/tmp
/usr
/var
/sbin
/kernel

 

ফাইল সিস্টেম নেভিগেট করা

নিচের কম্যান্ডগুলো নেভিগেশনের জন্য প্রয়োজন হয়,

 

কম্যান্ড
cat filename
cd dirname
cp file1 file2
file filename
find filename dir
head filename
less filename
ls dirname
mkdir dirname
more filename
mv file1 file2
pwd
rm filename
rmdir dirname
tail filename
touch filename
whereis filename
which filename

 

df (disk free) কম্যান্ড

পার্টিশনের জায়গা ব্যবস্থাপনার জন্য df –k কম্যান্ড কিলোবাইটে ডিস্ক স্পেস ইউসেজ প্রকাশ করে,


$df -k
Filesystem      1K-blocks      Used   Available Use% Mounted on
/dev/vzfs        10485760   7836644     2649116  75% /
/devices                0         0           0   0% /devices
$

সব ইউনিক্সের জন্য df –kআউটপুট একই রকমের বা কাছাকাছি। এগুলো হল,

 

আউটপুট কলাম
Filesystem
kbytes
used
avail
capacity
Mounted on

 

ডিইউ কলাম

ডিইউ (disk usage) কমান্ডে প্রতি ডিরেক্টরির কনজিউম করা ব্লকের সংখ্যা দেখানো হয়, একটি সিঙ্গেল ব্লক ৫১২ বাইট বা ১ কিলোবাইট জায়গা নেয়, এই পরিমান সিস্টেমের উপর নির্ভর করে।


$du    /etc
10     /etc/cron.d
126    /etc/default
6      /etc/dfs
...
$

 

-h অপশন আউটপুট প্রকাশকে সহজ করে,


$du -h /etc
5k    /etc/cron.d
63k   /etc/default
3k    /etc/dfs
...
$

 

ফাইল সিস্টেম মাউন্টিং

বর্তমানে মাউন্টেড ফাইল দেখতে,


$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
$

 

কোনও ফাইল সিস্টেমকে মাউন্ট করতে সিনট্যাক্স,


mount-t file_system_type device_to_mount directory_to_mount_to

 

 

যেমন, কোনও সিডি রমকে /mnt/cdrom ডিরেক্টরিতে মাউন্ট করতে সিনট্যাক্স,


$ mount-t iso9660/dev/cdrom/mnt/cdrom

 

ফাইল সিস্টেমকে আনমাউন্ট করতেঃ এক্ষেত্রে umount কম্যান্ড ব্যবহার করতে হবে, যেমন একটি সিডি রমকে আনমাউন্ট করতে


$ umount/dev/cdrom

 

ইউজার ও গ্রুপ কোটা

এক্ষেত্রে এডমিন নির্ধারণ করে দেন নির্দিষ্ট ব্যবহারকারী বা গ্রুপ কি পরিমান জায়গা ব্যবহার করতে পারবেন, এডমিন নির্ধারিত জায়গা অতিক্রম করলে দুটো লিমিটে ব্যবহারকারী ব্যবস্থা নিতে পারেন,

  • সফট লিমিট
  • হার্ড লিমিট

এডমিন কোটার কম্যান্ডগুলো হল,

কম্যান্ড
quota
edquota
quotacheck
setquota
quotaon
quotaoff
repquota

 

ইউনিক্স – SED এর সাথে রেগুলার এক্সপ্রেশন (Unix – Regular Expressions with SED)

রিদওয়ান বিন শামীম

 

আজকের টিউটোরিয়ালে আমরা দেখব কীভাবে sed তে রেগুলার এক্সপ্রেশন ব্যবহার করা হয়।

 

এসইডিকে ইনভোক করা

পাইপের মাধ্যমে এসইডিতে ডাটা প্রেরণ করে একে ইনভোক করা যায়,


$ cat /etc/passwd | sed
Usage: sed [OPTION]... {script-other-script} [input-file]...
 
  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script
...............................

 

এসইডির জন্য সাধারণ সিনট্যাক্স

এসইডির জন্য সাধারণ সিনট্যাক্স এরকম,


/pattern/action

 

এখানের স্ল্যাস ক্যারেক্টারগুলো ডিলিমিটার হিসেবে ব্যবহৃত হয়।

রেঞ্জ বিবরণ
p লাইন প্রিন্ট করে
d লাইন ডিলিট করে
s/pattern1/pattern2/ প্যাটার্ন ১ এর ঘটনাকে প্যাটার্ন ২ দ্বারা প্রতিস্থাপন করে।

 

 

এসইডিতে লাইন ডিলিট করতে

লাইন ডিলিট করতে নিচের কম্যান্ড ব্যবহৃত হয়,


$ cat /etc/passwd | sed 'd'
$

 

cat command ছাড়া এই কম্যান্ডও অনুরূপ কাজ করে,

 


$ sed -e 'd' /etc/passwd
$

এসইডি এড্রেসিং

এসইডি কম্যান্ডে বেসিক এড্রেস যোগ করতে যে কম্যান্ড ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed '1d' |more
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

এসইডি কম্যান্ডে এড্রেস রেঞ্জ নির্ধারণ করতে আমরা  যে কম্যান্ড ব্যবহার করতে পারি তা হল,


$ cat /etc/passwd | sed '1, 5d' |more
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

উপরের কম্যান্ড এক থেকে পাঁচ নাম্বার পর্যন্ত লাইন ডিলিট করতে ফলপ্রসূ হবে।

 

আরও কিছু এড্রেস রেঞ্জের উদাহরণ,

রেঞ্জ
‘4,10d’
‘10,4d’
‘4,+5d’
‘2,5!d’
‘1~3d’
‘2~2d’
‘4,10p’
‘4,d’
‘,10d’

 

মনে রাখা দরকার, p একশন ব্যবহারের সময় পুনরাবৃত্তি এড়াতে -n অপশন ব্যবহার করা উচিৎ,

 


$ cat /etc/passwd | sed -n '1,3p'

এই কম্যান্ডকে -n ছাড়া ব্যবহার করলে যা পাচ্ছি,


$ cat /etc/passwd | sed '1,3p'

সাবস্টিটিউশন কম্যান্ড

স্ট্রিং root কে amrood স্ট্রিং দ্বারা প্রতিস্থাপিত করতে কম্যান্ড,

 


$ cat /etc/passwd | sed 's/root/amrood/'
amrood:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
..........................

এসইডিকে গ্লোবাল সাবস্টিটিউশনের নির্দেশ দিতে কম্যান্ডের শেষে g লাগাতে হয়,

 


$ cat /etc/passwd | sed 's/root/amrood/g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

 

 

সাবস্টিটিউশন ফ্ল্যাগ

অনেকগুলো সাবস্টিটিউশন ফ্ল্যাগ আছে যার মধ্যে একই সময়ে একাধিককে স্পেসিফাই করে দিতে পারি আমরা,

 

ফ্ল্যাগ
g
NUMBER
p
w FILENAME
I or i
M or m

 

অলটারনেটিভ স্ট্রিং সেপারেটর ব্যবহার করা

s এর পড়ে কাঙ্খিত ক্যারেক্টার ব্যবহার করে বিভিন্ন সেপারেটর ব্যবহার করা যায়।

 


$ cat /etc/passwd | sed 's:/root:/amrood:g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এম্পটি স্পেস দ্বারা রিপ্লেস করা

/etc/passwd ফাইল থেকে রুট স্ট্রিং ডিলিট করার জন্য এম্পটি সাবস্টিটিউশন স্ট্রিং ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এড্রেস সাবস্টিটিউশন

কেবল দশম লাইনের string shকে string quiet দ্বারা  সাবস্টিটিউট করতে,


$ cat /etc/passwd | sed '10s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/quiet

একইভাবে, এড্রেস রেঞ্জ সাবস্টিটিউশন করতে,

 


$ cat /etc/passwd | sed '1,5s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/quiet
daemon:x:1:1:daemon:/usr/sbin:/bin/quiet
bin:x:2:2:bin:/bin:/bin/quiet
sys:x:3:3:sys:/dev:/bin/quiet
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

ম্যাচিং কম্যান্ড

-n অপশনের সাথে p অপশন ব্যবহার করে ম্যাচিং লাইন প্রিন্ট করতে পারি,


$ cat testing | sed -n '/root/p'
root:x:0:0:root user:/root:/bin/sh
[root@ip-72-167-112-17 amrood]# vi testing
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

রেগুলার এক্সপ্রেশন ব্যবহার করা

daemon দিয়ে করা লাইন খুঁজে বের করে ডিলিট করতে,

 


$ cat testing | sed '/^daemon/d'
root:x:0:0:root user:/root:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

 

sh দিয়ে শেষ এমন লাইনের ক্ষেত্রে ডিলিটের কম্যান্ড,

 


$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync

 

রেগুলার এক্সপ্রেশনের জন্য গুরুত্বপূর্ণ এমন চারটি স্পেশাল ক্যারেক্টার,

ক্যারেক্টার
^
$
.
*
[chars]

 

ম্যাচিং ক্যারেক্টার

ম্যাচিং ক্যারেক্টারের কিছু প্যাটার্ন দেয়া হল,

এক্সপ্রেশন
/a.c/
/a*c/
/[tT]he/
/^$/
/^.*$/
/ */
/^$/

বহুল ব্যবহৃত কিছু ক্যারেক্টার সেট নিচে দেয়া হল,

সেট
[a-z]
[A-Z]
[a-zA-Z]
[0-9]
[a-zA-Z0-9]

 

ক্যারেক্টার ক্লাস কীওয়ার্ড

/etc/syslog.conf ফাইলের উদাহরণে এলফাবেট ক্যারেক্টার ক্লাস কীওয়ার্ড ব্যবহৃত হয়েছে।


$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.*                         /var/log/secure
mail.*                             -/var/log/maillog
cron.*                             /var/log/cron
uucp,news.crit                     /var/log/spooler
local7.*

 

জিএনইউ এসইডিতে পাওয়া ক্যারেক্টার ক্লাস কীওয়ার্ডের একটি তালিকা নিচে দেয়া হল,

ক্যারেক্টার ক্লাস
[[:alnum:]]
[[:alpha:]]
[[:blank:]]
[[:cntrl:]]
[[:digit:]]
[[:graph:]]
[[:lower:]]
[[:print:]]
[[:punct:]]
[[:space:]]
[[:upper:]]
[[:xdigit:]]

 

এম্পারসেন্ড রেফারেন্সিং

ধরা যাক, নিচের ফাইলে ফোননাম্বার আছে, এতে এরিয়া কোড বসাতে হবে,

 


5555551212
5555551213
5555551214
6665551215
6665551216
7775551217

এম্পারসেন্ড রিপ্লেসমেন্ট ক্যারেক্টার বসিয়ে এটি করতে হলে যা করতে হবে তা হল,

 


$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217

মাল্টিপল এসইডি কম্যান্ড ব্যবহার

সিঙ্গেল এসইডি কম্যান্ডে মাল্টিপল এসইডি কম্যান্ড ব্যবহার করতে নিচের কম্যান্ড ব্যবহার করতে পারি,

 


$ sed -e 'command1' -e 'command2' ... -e 'commandN' files

একই কৌশল ব্যবহার করে ফোন নাম্বার উদাহরণকে আমরা এভাবে লিখতে পারি,

 


$ sed -e 's/^[[:digit:]]\{3\}/(&)/g'  \
                      -e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

ব্যাক রেফারেন্স

ধরা যাক, অনুমিত ফোন টেক্সটে এই টেক্সটগুলো আছে,

 


(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

এতে নিচের কম্যান্ড প্রয়োগ করা যেতে পারে,

 


$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
                       code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217

 

ইউনিক্সঃ সেল ম্যানপেজ হেল্প (Unix – Shell Manpage Help)

রিদওয়ান বিন শামীম

 

ইউনিক্স কম্যান্ডগুলো অনেকধরণের ঐচ্ছিক ও বাধ্যতামূলক অপশন নিয়ে গঠিত হয়, এসব কম্যান্ডের সম্পূর্ণ সিনট্যাক্স মনে রাখা সহজ নাও হতে পারে।

যেহেতু কোনও ব্যক্তির পক্ষে এসব কম্যান্ডের সম্পূর্ণ সিনট্যাক্স মনে রাখা সম্ভব না তাই ইউনিক্সের প্রথম যুগ থেকেই অনলাইনে এসব সিনট্যাক্স সম্পর্কে সাহায্য লাভের সুযোগ আছে।

 

ইউনিক্সের সাহায্য ফাইলের ভার্সনগুলোকে ম্যান পেজ বলে। কোনও কম্যান্ড নেম জানা থাকলে কিন্তু প্রয়োগ বিধি জানা না থাকলে ম্যান পেজ প্রতিটা ধাপে সাহায্য করতে পারে।

সিনট্যাক্স

সিস্টেমে কাজ করার সময় কোনও ইউনিক্স কম্যান্ডের বিস্তারিত তথ্য পেতে নিচের কোড ব্যবহার করা হয়,


$man command

 

যেমন, pwd সম্পর্কে জানতে গেলে নিচের কোড লিখতে হবে,


$man pwd

 

man কম্যান্ড সম্পর্কে বিস্তারিত জানতে হলে যে কোড লিখতে হবে তা হল,


$man man

 

ম্যানপেজের সেকশন

ম্যানপেজ মূলত সেকশনে বিভক্ত থাকে যা প্রধানত এর অথরের বিবেচনায় মূল্যায়িত হয়। কিছু কমন সেকশন নিচের ছকে দেখানো হল,

 

সেকশন বর্ণনা
NAME কম্যান্ডের নাম
SYNOPSIS কম্যান্ডের জেনারেল ইউসেজ প্যারামিটার
DESCRIPTION কম্যান্ড ও এর কাজের বর্ণনা
OPTIONS কম্যান্ডের অপশন
SEE ALSO ম্যানপেজে সরাসরি সম্পৃক্ত কম্যান্ড ও তাদের সদৃশ ফাংশনালিটির তালিকাভুক্তি
BUGS কম্যান্ড বা এর আউটপুটে থাকে এমন জানা বিষয় বা বাগ।
EXAMPLES কম্যান্ড ব্যবহার বিষয়ে কমন উদাহরণ
AUTHORS ম্যানপেজ বা কম্যান্ডের অথর

 

এভাবেই গুরুত্বপূর্ণ ও প্রয়োজনীয় ইউনিক্স সেল কম্যান্ড আমরা হেল্প পেজ থেকে পেতে পারি।