Tag Archives: Unix

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

Huge Sell on Popular Electronics

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

 

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

ইউনিক্সের বেশিরভাগ ভার্সন 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 – Shell Useful Resources)

Huge Sell on Popular Electronics

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

 

ইউনিক্স সেলের গুরুত্বপূর্ণ রিসোর্স

  • বেল ল্যাবঃ ইউনিক্স অপারেটিং সিস্টেমের সূতিকাগার, ইউনিক্স অপারেটিং সিস্টেমের সারসংক্ষেপ ,ইতিহাস ও বর্ণনা এখানে পাওয়া যাবে।
  • বিডিএস ইউনিক্সঃ বর্তমান সময়ের সার্ভার, কম্পিউটার ও সংশ্লিষ্ট সিস্টেমের জন্য FreeBSD একটি ভাল অপারেটিং সিস্টেম।
  • লিনাক্স অনলাইনঃ লিনাক্স ইউনিক্স টাইপ ফ্রী একটি প্লাটফর্ম।
  • Unix @ Wikipedia : ইউনিক্স অপারেটিং সিস্টেমের সংক্ষিপ্ত বিবরণের জন্য।
  • The Unix Forums : ইউনিক্সপ্রিয় প্রোগ্রামারদের ফোরাম।

 

ইউনিক্সের উপর কিছু বই

http://www.amazon.com/exec/obidos/ASIN/0131480057/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596009658/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596005954/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0130424110/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0672324903/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0201877589/httpwwwtuto0a-20

 

ইউনিক্স, লিনাক্স কমান্ড তালিকা (List of Unix, Linux Commands)

Huge Sell on Popular Electronics

এই পোষ্টটি অতিশীগ্রই উন্মুক্ত করা হবে...............

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

Huge Sell on Popular Electronics

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

 

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

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

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

 

 

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

Huge Sell on Popular Electronics

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

 

ইউনিক্স কি

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

  • ১৯৬৯ সালে এটিএন্ডটি কর্মীদের দ্বারা বেল ল্যাবরেটরিতে প্রথম ইউনিক্স ডেভেলাপ করা হয়,
  • ইউনিক্সের বিভিন্ন ভার্সন পাওয়া যায়, 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)

Huge Sell on Popular Electronics

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

 

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


$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)

Huge Sell on Popular Electronics

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

 

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

 

সিগন্যালের নাম সিগন্যাল নাম্বার বিবরণ
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)

Huge Sell on Popular Electronics

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

 

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

ইউনিক্সের বেশিরভাগ ভার্সন 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)

Huge Sell on Popular Electronics

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

 

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

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

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

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

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

উপাদান বর্ণনা
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)

Huge Sell on Popular Electronics

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

 

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

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

 

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

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

  • /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)

Huge Sell on Popular Electronics

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

 

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

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

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

 

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

ইউনিক্স ক্রমবিন্যাসগত কাঠামো মেনে চলে, 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)

Huge Sell on Popular Electronics

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

 

আজকের টিউটোরিয়ালে আমরা দেখব কীভাবে 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)

Huge Sell on Popular Electronics

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

 

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

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

 

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

সিনট্যাক্স

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


$man command

 

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


$man pwd

 

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


$man man

 

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

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

 

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

 

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

 

ইউনিক্সঃ সেল ফাংশন (Unix – Shell Functions)

Huge Sell on Popular Electronics

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

 

ফাংশন কোনও স্ক্রিপ্টের ফাংশনালিটিকে ছোট ছোট লজিকাল সাবসেকশনে ভাগ করে যাতে এগুলো প্রয়োজনমত তাদের কাজ সম্পন্ন করতে পারে।

পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ফাংশন ব্যবহার করা কোডের পুনঃব্যবহারের একটি ভাল উপায়। কোডের পুনঃব্যবহার বর্তমান সময়ের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিঙের একটি গুরুত্বপূর্ণ অংশ।

সেল ফাংশন অন্যান্য প্রোগ্রামিং ভাষার সাবরুটিন, প্রক্রিয়া ও ফাংশনের মতই।

 

ফাংশন তৈরি করা

ফাংশন হিসেবে স্বীকৃতি পেতে নিচের সিনট্যাক্স ব্যবহার করতে হয়,


function_name () { 
   list of commands
}

 

নিচে ফাংশনের ব্যবহারের সহজ উদাহরণ দেয়া হল,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World"
}
 
# Invoke your function
Hello

 

উপরের কোডকে কার্যে পরিণত করলে নিম্নে প্রদত্ত ফলাফল পাওয়া যাবে,


$./test.sh
Hello World
$

 

ফাংশনের পাস প্যারামিটার

কিছু ফাংশন কাজের ক্ষেত্রে প্যারামিটার গ্রহণ করে, $1, $2 এসব দ্বারা এই ফাংশন প্রকাশ করা হয়,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
}
 
# Invoke your function
Hello Zara Ali

 

যা নিচের ফলাফল দেখাবে,


$./test.sh
Hello World Zara Ali
$

 

ফাংশন থেকে মান ফিরিয়ে আনাঃ return কম্যান্ড ব্যবহার করে ফাংশন থেকে যেকোনো মান ফিরিয়ে আনা সম্ভব, যার সিনট্যাক্স হল,


return code

 

এখানে যেকোনো কোড হতে পারে কিন্তু তা স্ক্রিপ্টের কনটেক্সটে অর্থবোধক হতে হবে।

যেমন, নিচের ফাংশন ভ্যালু ফিরিয়ে আনে,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}
 
# Invoke your function
Hello Zara Ali
 
# Capture value returnd by last command
ret=$?
 
echo "Return value is $ret"

 

যা নিম্নোক্ত ফলাফল দেবে,


$./test.sh
Hello World Zara Ali
Return value is 10
$

 

নেস্টেড ফাংশন

ফাংশনের একটি মজার ফিচার হল, এটি অন্য ফাংশনকে যেমন কল করতে পারে তেমনি নিজেদেরও কল করতে পারে। এধরনের ফাংশনকে রিকারসিভ ফাংশন বলে।

দুটি ফাংশনের নেস্টিং নিচের উদাহরণে দেয়া হল,


#!/bin/sh
 
# Calling one function from another
number_one () {
   echo "This is the first function speaking..."
   number_two
}
 
number_two () {
   echo "This is now the second function speaking..."
}
 
# Calling function one.
number_one

 

এটি যে ফলাফল দেখাবে তা হল,


This is the first function speaking...
This is now the second function speaking...

 

প্রম্পট থেকে ফাংশন কল

.profile এর ভিতরে সচরাচর ব্যবহৃত ফাংশনের জন্য সংজ্ঞা অন্তর্ভুক্ত করা যায়,অপরদিকে test.sh জাতীয় ফাইলে সংজ্ঞার গ্রুপ সংবদ্ধ করে কারেন্ট সেলে নিচের কোড দ্বারা সম্পাদন করা যায়,


$. test.sh

 

যা কিনা কারেন্ট সেলকে নিচের মত করে বিবৃত করে,


$ number_one
This is the first function speaking...
This is now the second function speaking...
$

 

সেল থেকে কোনও ফাংশনের সংজ্ঞা মুছে ফেলতে .f অপশনের সাথে unset কম্যান্ড ব্যবহার করতে হয়, এটি সেই একই কম্যান্ড যা সেল থেকে চলকের বিবরণ মুছে ফেলতে ব্যবহৃত হয়,


$unset.f function_name

 

ইউনিক্সঃ সেল ইনপুট/আউটপুট রিডাইরেকশন (Unix – Shell Input/Output Redirections)

Huge Sell on Popular Electronics

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

 

বেশিরভাগ ইউনিক্স সিস্টেম কম্যান্ড টার্মিনাল থেকে ইনপুট গ্রহণ করে এবং টার্মিনালে আউটপুট প্রদান করে।

কম্যান্ড স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট পড়ে ও স্ট্যান্ডার্ড আউটপুটে আউটপুট লিখে।

 

আউটপুট রিডাইরেকশন

নিচের who কম্যান্ড ইউজার ফাইলের কম্যান্ডের পুরোপুরি আউটপুটে পরিণত হবে,


$ who> users


 

এখানে লক্ষ্য করার মত বিষয়, টার্মিনালে কোনও আউটপুট নেই, কারণ আউটপুট স্পেসিফাইড ফাইলে চলে গেছে, সেটি ডিফল্ট স্ট্যান্ডার্ড আউটপুট ডিভাইস(এক্ষেত্রে টার্মিনাল) থেকে রিডাইরেক্ট হয়ে গেছে। যদি আমরা users ফাইল চেক করে দেখি তাহলে পরিপূর্ণ উপাদান দেখব,


$ cat users
oko         tty01   Sep 12 07:30
ai          tty15   Sep 12 13:32
ruth        tty21   Sep 12 10:10
pat         tty24   Sep 12 13:07
steve       tty25   Sep 12 13:03
$

 

রিডাইরেক্ট হওয়া ডাটা যে ফাইলে যাবে সে ফাইলে আগের কোনও ডাটা থাকলে তা মুছে যাবে, আমরা এ বিষয়টি নিচের উদাহরণে দেখতে পারি,


$ echo line1> users
$ cat users
line1$

 

পূর্বে থাকা কোনও ফাইলে আউটপুট বিস্তারনের জন্য আমরা >> অপারেটর ব্যবহার করতে পারি।


$ echo line2>> users
$ cat users
line1
line2
$

 

ইনপুট রিডাইরেকশন

আউটপুট যেমন রিডাইরেক্ট হয়ে ফাইলে আসতে পারে তেমনি ফাইল থেকে ইনপুট রিডাইরেক্ট হয়ে চলেও যেতে পারে। আউটপুট রিডাইরেকশন যেমন > ক্যারেক্টার দ্বারা প্রকাশ পায় তেমনি ইনপুট রিডাইরেকশন < ক্যারেক্টার দ্বারা প্রকাশ পায়।

যেমন, users ফাইলের লাইন নাম্বার নিচের কম্যান্ড থেকে বের করা যায়,


$ wc-l users
2 users
$

 

এখানে আউটপুট ২ লাইনের। users ফাইলের wc কম্যান্ডের স্ট্যান্ডার্ড ইনপুটের রিডাইরেকশনের মাধ্যমে আমরা লাইন সংখ্যা জানতে পারি।


$ wc-l< users
2
$

 

হেয়ার ডকুমেন্ট

হেয়ার ডকুমেন্টের সাধারণ ফর্ম এরকম,


command<< delimiter
document
delimiter

 

মোট লাইনসংখ্যা জানার wc –l কম্যান্ডের ইনপুট এরকম,


$wc -l << EOF
        This is a simple lookup program 
        for good (and bad) restaurants
        in Cape Town.
EOF
3
$

 

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


#!/bin/sh
 
cat << EOF
This is a simple lookup program 
for good (and bad) restaurants
in Cape Town.
EOF

 

যা এরকম ফলাফল দেখাবে,


This is a simple lookup program
for good (and bad) restaurants
in Cape Town.

 

এই স্ক্রিপ্ট vi টেক্সট এডিটর দিয়ে একটি সেশন চালাবে এবং test.txt ফাইলে ইনপুট সংরক্ষণ করবে।


#!/bin/sh
 
filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands

 

vi টেক্সট এডিটরের স্থলে vim টেক্সট এডিটর ব্যবহার করলে স্ক্রিপ্টের আউটপুট এরকম হবে,


$ sh test.sh
Vim: Warning: Input is not from a terminal
$

 

স্ক্রিপ্ট চালুর পর test.txt ফাইলে ফাইলে আমরা যা দেখব তা এরকম,


$ cat test.txt
This file was created automatically from
a shell script
$

 

আউটপুট ডিসকার্ড করা

আউটপুটকে /dev/null ফাইলে রিডাইরেক্ট করে এটি করা হয়,


$ command>/dev/null

 

কম্যান্ডের আউটপুট ও এর এরর আউটপুট দুটিকে ডিসকার্ড করতে


$ command>/dev/null2>&1

 

STDIN কে STDERR তে রিডাইরেক্ট করে ম্যাসেজ প্রদর্শন করতে


$ echo message1>&2

এই কোড ব্যবহার করা যায়।

 

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

এরকম কয়েকটি রিডাইরেকশন কম্যান্ড হল,

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

মনে রাখা দরকার, ফাইল ডেসক্রিপ্টর ০ হল নরমাল স্ট্যান্ডার্ড ইনপুট (STDIN), ১ হল স্ট্যান্ডার্ড আউটপুট (STDOUT) আর ২ হল স্ট্যান্ডার্ড এরর আউটপুট (STDERR) ।

 

ইউনিক্সঃ সেল কোটিং মেকানিজম (Unix – Shell Quoting Mechanisms)

Huge Sell on Popular Electronics

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

 

মেটাক্যারেক্টার

ইউনিক্স সেল বিভিন্ন মেটাক্যারেক্টার ব্যবহার করে যারা সেল স্ক্রিপ্টে ব্যবহৃত হওয়ার সময় স্বতন্ত্র অর্থ প্রকাশ করে। যেমন


*?[]' " \ $ ; & ( ) | ^ < > new-line space tab

 

উদাহরণ, * বা ? চিহ্ন প্রিন্ট করার জন্য যে কোড লিখব তা হল,


#!/bin/sh 
echoHello;Word

 

এটি যে ফলাফল দেখাবে তা হল,


Hello
./test.sh: line2:Word: commandnot found 
shell returned127

 

এখন একটি কোটেড ক্যারেক্টার ব্যবহার করে দেখা যাক,


#!/bin/sh 
echoHello\;Word

 

এটি যে ফলাফল দেখাবে,


Hello;Word

 

$ একটি মেটাক্যারেক্টার তাই সেলের ব্যতিক্রমী আচরণ এড়াতে একে কোটেড অবস্থায় রাখতে হবে,


#!/bin/sh 
echo"I have \$1200"

 

এটি যে ফলাফল দেবে তা হল,


I have $1200

 

চার ধরণের কোটিং দেখা যায়,

কোটিং বর্ণনা
Single quote এই কোটের মধ্যবর্তী বিশেষ ক্যারেক্টার তাদের বিশেষ অর্থ হারায়
Double quote এই কোটের মধ্যবর্তী বেশিরভাগ বিশেষ ক্যারেক্টার তাদের বিশেষ অর্থ হারায়,ব্যতিক্রমগুলো হল,

  • $
  • `
  • \$
  • \'
  • \"
  • \\
Backslash ব্যাকস্লেসকে অনুসরণ করা কোনও ক্যারেক্টার তাদের বিশেষ অর্থ হারায়
Back Quote ব্যাককোটের মধ্যবর্তী যেকোনো কিছুই কম্যান্ড, এগুলোকে সম্পাদন করা হয়

 

সিঙ্গেল কোট

একটি ইকো কম্যান্ড চিন্তা করা যাক যেটিতে অনেকগুলো সেল কম্যান্ড আছে।


echo<-$1500.**>;(update?)[y|n]

 

এর প্রত্যেকটি স্পেশাল ক্যারেক্টারের সামনে ব্যাকস্লেস দেয়া শ্রান্তিজনক ও পড়া কঠিন করে ফেলতে পারে।


echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

 

এরকম বড় ক্যারেক্টার গ্রুপকে কোটিং করার একটি সহজ উপায় আছে। স্ট্রিংএর শুরু আর শেষে একটি করে সিঙ্গেল কোট ( ') দিতে হবে,


echo'<-$1500.**>; (update?) [y|n]'

 

আউটপুট হবে এমন স্ট্রিংএ সিঙ্গেল কোট বসলে পুরো স্ট্রিংকে সিঙ্গেল কোটে রাখার বদলে নিচের উদাহরণের মত করে ব্যাকস্লেস ব্যবহার করতে হবে,


echo'It\'s Shell Programming'

 

ডাবল কোট

নিচের সেল স্ক্রিপ্ট চেষ্টা করে দেখা যাক, এটি সিঙ্গেল কোটের আচরণ দেখাবে,


VAR=ZARA
echo'$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

 

যার ফলাফল,


$VAR owes<-$1500.**>;[as of(`date +%m/%d`)]

 

কিন্তু যদি আমরা সাবস্টিটিউট চলক মান চাই ও ইনভার্টেড কমা কার্যকর দেখতে চাই তাহলে ডাবল কোটের মধ্যে নিম্নোক্ত উপায়ে কম্যান্ড লিখতে হবে,


VAR=ZARA
echo"$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

 

এতে করে যে ফলাফল আসবে তা হল,


ZARA owes<-$1500.**>;[as of(07/02)]

 

ডাবল কোট সব ক্যারেক্টারের স্পেশাল মিনিং নিয়ে নেয় কিছু ব্যতিক্রম ছাড়া

  • প্যারামিটারসাবস্টিটিউশনের জন্য $
  • কম্যান্ড সাবস্টিটিউশনের জন্য ব্যাককোট
  • লিটারেল ডলার সাইনের অনুমোদনের জন্য \$
  • লিটারেল ব্যাককোট অনুমোদনের জন্য \`
  • এমবেডেড ডাবল কোট অনুমোদনের জন্য \"
  • এমবেডেড ব্যাকস্লেস অনুমোদনের জন্য \\
  • অন্য সব \ ক্যারেক্টার স্পেশাল নয়

 

ব্যাক কোট

ব্যাক কোটের মধ্যে সেল কম্যান্ড রাখলে তা সম্পাদন করা হয়, সেল কম্যান্ডকে ব্যাক কোটের মধ্যে রাখার সরল সিনট্যাক্স নিচের উদাহরণে,


var=`command`

 

যেমন, ডেট কম্যান্ড সম্পাদন করে এর ফলাফলকে ডাটা ভেরিয়েবলে রাখার জন্য,


DATE=`date` 
echo"Current Date: $DATE"

 

এটি নিচের ফলাফল প্রদর্শন করবে,


CurrentDate:ThuJul205:28:45 MST2009

 

ইউনিক্সঃ সেল সাবস্টিটিউশন (Unix – Shell Substitution)

Huge Sell on Popular Electronics

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

 

সাবস্টিটিউশন কী

একটি সেল সাবস্টিটিউশন প্রয়োগ করে তখন, যখন সেটি এমন পরিস্থিতি অনুধাবন করে যা এক বা একাধিক বিশেষ চিহ্ন(স্পেশাল ক্যারেকটার) ধারণ করে থাকে।

নিচের উদাহরণটি এমন একটি ক্ষেত্র যেখানে কোনও চলকের মুদ্রায়িত মান এর মূল মানের দ্বারা প্রতিস্থাপিত হয়েছে। একই সাথে "\n" একটি নতুন লাইনের মাধ্যমে প্রতিস্থাপিত হয়েছে।


#!/bin/sh
 
a=10
echo -e "Value of a is $a \n"

 

-e অপশন প্রয়োগে যা নিম্নোক্ত ফলাফল প্রদান করে,

Value of a is 10 এবং -e অপশন প্রয়োগ না করে ফলাফল হবে, Value of ais10\n ইকো কম্যান্ডের জন্য নিম্নোক্ত এস্কেপ সিকোয়েন্স প্রয়োগ করা যায়,

 

Escape Description
\\ backslash
\a alert (BEL)
\b backspace
\c suppress trailing newline
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab

ব্যাকস্লেস এস্কেপের ইন্টারপ্রিটেশন ডিজেবল রাখতে –E অপশন ও নতুন লাইনের অন্তর্ভুক্তি রহিত করতে –n ব্যবহার করা যায়।

 

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

কম্যান্ড সাবস্টিটিউশন হল একপ্রকার প্রক্রিয়া যার মাধ্যমে সেল কোনও কম্যান্ডের সেট সম্পাদন করে ও এর আউটপুট দ্বারা কম্যান্ডকে প্রতিস্থাপিত করে।

কম্যান্ড সাবস্টিটিউশন তখন কার্যকর হয় যখন নিম্নোক্ত নির্দেশনা দেয়া থাকে,


`command`

 

এসব ক্ষেত্রে সিঙ্গেল কোট ক্যারেকটারের পরিবর্তে ব্যাককোট ব্যবহার করতে হয়।

উদাহরণ

কম্যান্ড সাবস্টিটিউশন মূলত কম্যান্ডের আউটপুটকে চলকরূপে প্রকাশের জন্য ব্যবহৃত হয়,

নিচের প্রত্যেকটি উদাহরণ কম্যান্ড সাবস্টিটিউশনকে বিবৃত করে।


#!/bin/sh
 
DATE=`date`
echo "Date is $DATE"
 
USERS=`who | wc -l`
echo "Logged in user are $USERS"
 
UP=`date ; uptime`
echo "Uptime is $UP"

 

এই কোডগুলো যে ফলাফল দেখাবে তা হল,


Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

 

চলক সাবস্টিটিউশন

চলক সাবস্টিটিউশন চলকের অবস্থার প্রেক্ষিতে সেল প্রোগ্রামারকে এর মান ব্যবহারের সুযোগ দেয়।

সম্ভাব্য সাবস্টিটিউশন গুলো নিচের ছকে দেয়া হল,

প্রকার বর্ণনা
${var} var. এর মানকে প্রতিস্থাপিত করে
${var:-word} var শূন্য বা আনসেট হলে, var.এর জন্য শব্দ প্রতিস্থাপিত হয়। var এর মান অপরিবর্তিত থাকে।
${var:=word} var শূন্য বা আনসেট হলে, var শব্দের মান অনুসারে নির্ণীত হয়
${var:?message} var শূন্য বা আনসেট হলে, message standard error হিসেবে প্রতীয়মান হয়, চলক ঠিকমত প্রয়োগ করা হয়েছে কিনা এটি তা দেখে।
${var:+word} var সেট হলে শব্দ var এর দ্বারা প্রতিস্থাপিত হয় var এর মান অপরিবর্তিত থাকে।

 

উদাহরণ

নিচে এধরণের সাবস্টিটিউশনের উদাহরণ দেয়া হল,


#!/bin/sh
 
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
 
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
 
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
 
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
 
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

 

উপরের কোডগুলো যে ফলাফল দেখাবে তা হল,


Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
 
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix

 

ইউনিক্সঃ সেল লুপ কন্ট্রোল (Unix – Shell Loop Control)

Huge Sell on Popular Electronics

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

 

বিভিন্ন কাজের জন্য লুপ তৈরি ও ব্যবহার করার সাথে আমরা সবাই পরিচিত। কখনো কখনো লুপ এড়ানো বা এর পুনরাবৃত্তি করা প্রয়োজন হয়ে পরে।

 

সেল লুপ নিয়ন্ত্রণের জন্য দুটি স্টেটমেন্ট নিয়ে আমরা আলোচনা করব।

  • ব্রেক স্টেটমেন্ট
  • কন্টিনিউ স্টেটমেন্ট

 

ইনফিনিট লুপ

সব লুপের শুরু বা শেষ ও একটি সীমিত ক্রিয়াসীমা থাকে, নির্ধারিত শর্তে পৌঁছে এর ক্রিয়াসীমা শেষ হয়। সেই নির্ধারিত শর্তে না পৌঁছলে লুপ স্থায়ী হয়ে থেকে যেতে পারে। এধরনের লুপ ইনফিনিট লুপ নামে পরিচিত।

 

নিচের উদাহরণে জিরো থেকে ৯ পর্যন্ত নাম্বার প্রদর্শনের নিমিত্তে লুপের প্রয়োগ দেখানো হল।


#!/bin/sh
 
a=10
 
while [ $a -ge 10 ]
do
   echo $a
   a=`expr $a + 1`
done

এই লুপ সারা জীবন স্থায়ী হবে কারণ a সবসময় ১০এর চেয়ে বড় বা এর সমান, এটি কখনো ১০ এরচেয়ে ছোট হবে না।

 

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

ব্রেক স্টেটমেন্ট সম্পূর্ণ লুপের কার্যক্রম থামাতে ব্যবহৃত হয়, এর পূর্ব পর্যন্ত সকল কোডের কার্যক্রম সম্পন্ন হওয়ার পর।

 

সিনট্যাক্স

লুপের কার্যক্রম থামাতে নিম্নোক্ত ব্রেক স্টেটমেন্ট ব্যবহার করা হয়,


break


 

 

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


break n


 

 

n তম লুপ থেকে বেরিয়ে যাওয়ার জন্য এই কোড ব্যবহৃত হয়।

যেমন


#!/bin/sh
 
a=0
 
while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

 

উপরের কোড যে ফলাফল দেখাবে তা হল,


0
1
2
3
4
5

 

এই উদাহরণের উভয় লুপের ক্ষেত্রে পরিবর্তন হবে যদি var1 দুইয়ের সমান ও var2 শূন্যের সমান হয়।


#!/bin/sh
 
for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

 

শর্ত পূরণ হলে ইনার লুপ ও আউটার লুপ বিলুপ্ত করে দেয়া হয়,


1 0
1 5

 

কন্টিনিউ স্টেটমেন্ট

লুপের পুনরাবৃত্তির ক্ষেত্রে কন্টিনিউ স্টেটমেন্ট প্রয়োগ করা সম্ভব, এর সিনট্যাক্স হল,


continue


 

 

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


continue n


n তম লুপের ক্ষেত্রে এই কোড ব্যবহৃত হয়।

 

উদাহরণ

নিচের উদাহরণে কন্টিনিউ স্টেটমেন্টের এই কোড ব্যবহার করা হয়,


#!/bin/sh
 
NUMS="1 2 3 4 5 6 7"
 
for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

 

এটি নিচের মতো ফলাফল দেখাবে,


Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number

 

ইউনিক্সঃ সেল লুপ টাইপ (Unix – Shell Loop Types)

Huge Sell on Popular Electronics

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

 

লুপ হল আদর্শ প্রোগ্রামিং অনুষঙ্গ যার দ্বারা কম্যান্ডের সেটকে পুনরাবৃত্তিক ভাবে সম্পাদন করা যায়। সেল প্রোগ্রামিঙের জন্য প্রযোজ্য লুপের প্রকরণগুলোকে নিচে পরীক্ষা করে দেখা হবে।

  • হোয়াইল লুপ
  • ফর লুপ
  • আনটিল লুপ
  • সিলেক্ট লুপ

 

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

 

নেস্টিং লুপ

সব ধরণের লুপ নেস্টিং ধারণাকে সমর্থন করে, এই ধারণা অনুসারে একটি লুপকে সদৃশ আরেকটি লুপের ভেতর স্থাপন করা যায়।

এভাবে হোয়াইল লুপ বা সদৃশ অন্য কোনও লুপকে কীভাবে স্থাপন করা যায় তা দেখানো যাক,

এক হোয়াইল লুপকে অন্য হোয়াইল লুপের অংশ হিসেবে ব্যবহার করা যায়, এর সিনট্যাক্স হল,


while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true
 
   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done
 
   Statement(s) to be executed if command1 is true
done

 

লুপ নেস্টিংএর একটি সহজ উদাহরণ হল,


#!/bin/sh
 
a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

 

নয় গণনার লুপের ভেতর আরেকটি গণনা লুপ প্রয়োগ করার ক্ষেত্রে উপরের কোডিং ব্যবহৃত হয়েছে, যা নিম্নোক্ত ফলাফল দেখায়,


0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0

এখানে echo –n কাজ করেছে, -n এর জন্য নতুন লাইন ক্যারেকটার স্থাপন রহিত হয়েছে।

 

ইউনিক্সঃ সেল ডিসিশন মেকিং (Unix – Shell Decision Making)

Huge Sell on Popular Electronics

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

 

সেল স্ক্রিপ্ট লেখার সময় দুটি প্রদত্ত পাথ থেকে একটি বেছে নেয়ার প্রয়োজন হতে পারে, সেক্ষেত্রে সঠিক সিদ্ধান্ত নেয়ার জন্য কন্ডিশনাল স্টেটমেন্টের সাহায্য নেয়া যেতে পারে।

ভিন্ন কন্ডিশনে ভিন্ন ভিন্ন পদক্ষেপ নিতে পারে ইউনিক্স সেল এমন কন্ডিশনাল স্টেটমেন্টের সাহায্য নেয়, এখানে আমরা দুই ধরণের ডিসিশন মেকিং স্টেটমেন্ট বিষয়ে আলোচনা করব।

  • if...else স্টেটমেন্ট
  • case...esac স্টেটমেন্ট

 

if...else স্টেটমেন্ট

এক সেট প্রদত্ত অপশন থেকে একটি নির্বাচনের জন্য এই পদ্ধতি প্রয়োগ করা হয়। ইউনিক্স সেল if...else স্টেটমেন্টের যে ফর্মগুলো সমর্থন করে তা হল,

  • ..fi statement
  • ..else...fi statement
  • ..elif...else...fi statement

মাল্টিওয়ে ব্রাঞ্চের জন্য মাল্টিপল if...elif স্টেটমেন্ট প্রয়োগ করা সম্ভব হয়, যদিও এটি সবসময় ফলপ্রসূ নয় কারণ ব্রাঞ্চগুলো একক চলকের উপর নির্ভরশীল থাকতে পারে। এসব ক্ষেত্রে ইউনিক্স সেল case...esac স্টেটমেন্ট সমর্থন করে। এটি কেবলমাত্র এক প্রকরণের হয়ে থাকে,

  • case...esac statement

ইউনিক্স সেল case...esac স্টেটমেন্ট অন্যান্য প্রোগ্রামিং ভাষা যেমন সি বা সি প্লাস প্লাস বা পিইআরএলের switch...case এর সদৃশ।

 

ইউনিক্সঃ সেল বেসিক অপারেটরস (Unix – Shell Basic Operators)

Huge Sell on Popular Electronics

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

 

প্রত্যেক সেল সমর্থিত কিছু অপারেটর থাকে। আমরা এখানে ডিফল্ট সেল (Bourne) নিয়ে আলোচনা করব।বর্ন সেলের গুরুত্বপূর্ণ যে অপারেটরগুলো নিয়ে এখানে আলোচনা করা হবেঃ

  • এরিথমেটিক অপারেটর
  • রিলেশনাল অপারেটর
  • বুলিয়েন অপারেটর
  • স্ট্রিং অপারেটর
  • ফাইল টেস্ট অপারেটর

বর্ন সেলের নিজের এরিথমেটিক কাজ সম্পাদনের কৌশল নেই কিন্তু তারা বাইরের প্রোগ্রাম যেমন awk বা expr ব্যবহার করে,

নিচের উদাহরণে দুটি সংখ্যা যোগ করার প্রক্রিয়া দেখানো হল,


#!/bin/sh
 
val=`expr 2 + 2`
echo "Total value : $val"

 

এটি যে ফলাফল দেবে তা হল,


Total value:4


 

 

এখানে কয়েকটি ব্যপার মনে রাখা দরকার,

  • অপারেটর ও এক্সপ্রেশনের মাঝে স্পেস থাকতে হয়,
  • সম্পূর্ণ এক্সপ্রেশন ইনভার্টেড কমা দ্বারা আবদ্ধ করা থাকে

 

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

বর্ণ সেল যেসব এরিথমেটিক অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান ১০ ও b চলকের মান ২০ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
+ `expr $a + $b` হয় 30
- `expr $a - $b` থেকে পাই -10
* `expr $a \* $b` থেকে পাই 200
/ `expr $b / $a` থেকে পাই 2
% `expr $b % $a` থেকে পাই 0
= a=$b এটি এই বুঝায় যে bএর মান a এর মানের মধ্যে আছে।
== [ $a == $b ] এর রিটার্ন মিথ্যা
!= [ $a != $b ] রিটার্ন সত্য

 

এখানে একটি বিষয় খুব গুরুত্বপূর্ণ যে, কন্ডিশনাল এক্সপ্রেশনকে স্কয়ার ব্র্যাকেটের মধ্যে দুপাশে একটি করে স্পেস দিয়ে আবদ্ধ রাখতে হয়। যেমন,

[ $a == $b ] সঠিক।

[$a==$b] ভুল।

 

সব এরিথমেটিক হিসাব লম্বা পূর্ণসংখ্যার মাধ্যমে করা হয়।

 

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

বর্ণ সেল যেসব রিলেশনাল অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

অপারেটর উদাহরণ
-eq [ $a -eq $b ] বিবৃতি সত্য নয়
-ne [ $a -ne $b ] বিবৃতি সত্য
-gt [ $a -gt $b ] বিবৃতি সত্য নয়
-lt [ $a -lt $b ] বিবৃতি সত্য
-ge [ $a -ge $b ] বিবৃতি সত্য নয়
-le [ $a -le $b ] বিবৃতি সত্য

 

এখানে একটি বিষয় খুব গুরুত্বপূর্ণ যে, কন্ডিশনাল এক্সপ্রেশনকে স্কয়ার ব্র্যাকেটের মধ্যে দুপাশে একটি করে স্পেস দিয়ে আবদ্ধ রাখতে হয়। যেমন,

[ $a <= $b ] সঠিক।

[$a <= $b] ভুল।

 

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

বর্ণ সেল যেসব বুলিয়েন অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান ১০ ও b চলকের মান ২০ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
! [ ! false ] বিবৃতি সত্য
-o [ $a -lt 20 -o $b -gt 100 ] বিবৃতি সত্য
-a [ $a -lt 20 -a $b -gt 100 ] বিবৃতি মিথ্যা

 

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

বর্ণ সেল যেসব স্ট্রিং অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান "abc" ও b চলকের মান "efg"ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
= [ $a = $b ] মিথ্যা বিবৃতি
!= [ $a != $b ] সত্য বিবৃতি
-z [ -z $a ] মিথ্যা বিবৃতি
-n [ -z $a ] সত্য বিবৃতি
str [ $a ] সত্য বিবৃতি

 

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

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

১০০ বাইটের "test" নামের চলক ফাইলের জন্য টেস্ট অপারেটরঃ

 

অপারেটর উদাহরণ
-b file [ -b $file ] বিবৃতি সত্য
-c file [ -c $file ] বিবৃতি সত্য নয়
-d file [ -d $file ] বিবৃতি সত্য নয়
-f file [ -f $file ] বিবৃতি সত্য
-g file [ -g $file ] বিবৃতি সত্য নয়
-k file [ -k $file ] বিবৃতি সত্য নয়
-p file [ -p $file ] বিবৃতি সত্য নয়
-t file [ -t $file ] বিবৃতি সত্য নয়
-u file [ -u $file ] বিবৃতি সত্য নয়
-r file [ -r $file ] বিবৃতি সত্য
-w file [ -w $file ] বিবৃতি সত্য
-x file [ -x $file ] বিবৃতি সত্য
-s file [ -s $file ] বিবৃতি সত্য
-e file [ -e $file ] বিবৃতি সত্য

 

ইউনিক্সঃ সেল অ্যারি ব্যবহার করা (Unix – Using Shell Arrays)

Huge Sell on Popular Electronics

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

 

সেল ভেরিয়েবল একক মান ধারণে সক্ষম। এই ধরণের ভেরিয়েবল বা চলককে স্কেলার চলক বলে। সেল অ্যারি ভেরিয়েবল নামের ভিন্ন একধরনের চলক সমর্থন করে যারা একসাথে অনেকগুলো মান ধারনে সক্ষম। অ্যারি ভেরিয়েবল চলকের সেট গ্রুপিং এর জন্য একটি পদ্ধতি ব্যবহার করে। চলকের নতুন নাম সৃষ্টির পরিবর্তে,একক অ্যারি ভেরিয়েবল ব্যবহার করা যায় যার মধ্যে অন্য চলকগুলোকে সংরক্ষণ করা যাবে।

 

অ্যারি ভ্যালুর বিবৃতি

অ্যারি ভেরিয়েবল ও স্কেলার ভেরিয়েবলের মধ্যে যে পার্থক্য তা নিচে দেখানো হল,

ধরা যাক কোনও চলকের মধ্যে থাকে কিছু ছাত্রের নাম নিয়ে আমরা কাজ করতে চাই, প্রত্যেকটি স্বতন্ত্র চলক (নিচের মত) একটি করে স্কেলার চলক।


NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"


 

আমরা এই সবগুলো নাম সংরক্ষণের জন্য একক অ্যারি ব্যবহার করতে পারি। নিচে অ্যারি ভেরিয়েবল তৈরির সহজ একটি উপায় দেয়া হল,


array_name[index]=value


 

এখানে array_name হল অ্যারির নাম, index হল আইটেমের ইনডেক্স আর value হল আইটেমের যে ভ্যালু আমরা সেট করতে চাই। উদাহরণ হিসেবে কম্যান্ডগুলো হল,


NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

 

ksh সেল ব্যবহার করে থাকলে অ্যারি শুরু করতে যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


set-A array_name value1 value2... valuen

 

bash সেল ব্যবহার করে থাকলে অ্যারি শুরু করতে যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


array_name=(value1... valuen)

 

অ্যারি ভ্যালুতে প্রবেশ করা

কোনও অ্যারি ভেরিয়েবল তৈরির পর সেটিতে প্রবেশ করার জন্য কোড,


${array_name[index]}


 

এখানে array_name হল অ্যারির নাম, index হল যে ভ্যালু প্রবেশ করাব তার ইনডেক্স।নিচে একটি সহজ উদাহরণ দেয়া যাক,


#!/bin/sh
 
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

 

যেটির ফলাফল হবে এমন,


$./test.sh
First Index: Zara
Second Index: Qadir


 

অ্যারির সবগুলো আইটেমে আমরা নিচের যেকোনো একটি উপায়ে ঢুকতে পারি,


${array_name[*]}
${array_name[@]}


 

এখানে array_name হল সেই অ্যারির নাম যাতে আমরা ঢুকতে চাই। নিচে এর একটি সরল উদাহরণ দেয়া হল,


#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"


 

এটি যে ফলাফল দেখাবে তা হল,


$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy


 

ইউনিক্সঃ স্পেশাল ভেরিয়েবলস (Unix – Special Variables)

Huge Sell on Popular Electronics

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

 

পূর্ববর্তী টিউটোরিয়ালে ভেরিয়েবল নামে নন আলফানিউমেরিক ক্যারেক্টার ব্যবহার বিষয়ে সতর্ক করা হয়েছিল, কারণ ইউনিক্স চলকে এদের ভিন্ন অর্থ হয়।

যেমন, $ ক্যারেক্টার কারেন্ট সেলে আইডি নাম্বার বা পিআইডি প্রক্রিয়া বোঝায়।


$echo $$


 

উপরের কম্যান্ড কারেন্ট সেলের পিআইডি যেভাবে বোঝায়,


29949


 

নিচের ছকে সেল স্ক্রিপ্টে ব্যবহার করা যায় এমন স্পেশাল ভেরিয়েবল দেখানো হল,

Variable Description
$0 কারেন্ট স্ক্রিপ্টের ফাইল নেম
$n এই চলক সেসব আর্গুমেন্টের সাথে সমন্বয় করে যারা স্ক্রিপ্টকে সাহায্য করে।
$# স্ক্রিপ্টে সরবরাহ করা আর্গুমেন্টের সংখ্যা
$* সব আর্গুমেন্ট ডাবল কোটেড। কোনও স্ক্রিপ্ট দুটি আর্গুমেন্ট রিসিভ করলে $* , $1 $2 এর সমপর্যায়ের।
$@ সব আর্গুমেন্ট স্বতন্ত্রভাবে ডাবল কোটেড। কোনও স্ক্রিপ্ট দুটি আর্গুমেন্ট রিসিভ করলে $@, $1 $2 এর সমপর্যায়ের।
$? সর্বশেষ সম্পাদিত কম্যান্ডের এক্সিট স্ট্যাটাস
$$ কারেন্ট সেলের প্রসেস নাম্বার
$! সর্বশেষ ব্যাকগ্রাউন্ড সেলের প্রসেস নাম্বার

 

কম্যান্ড লাইন আর্গুমেন্টঃ কম্যান্ড লাইন আর্গুমেন্ট $1, $2, $3,...$9 হল পজিসনাল প্যারামিটার যার $0 প্রকৃত কম্যান্ড, সেল স্ক্রিপ্ট,প্রোগ্রাম বা ফাংশন ও $1, $2, $3, ...$9 হল কম্যান্ডের আর্গুমেন্ট।

নিচের স্ক্রিপ্ট কম্যান্ড লাইন সংশ্লিষ্ট বিভিন্ন স্পেশাল ভেরিয়েবলস ব্যবহার করে,


#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

 

নিচে উপরের স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন দেয়া হল,


$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

 

স্পেশাল প্যারামিটার $* and $@ঃ কম্যান্ড লাইন আর্গুমেন্টে ঢোকার জন্য স্পেশাল প্যারামিটার আছে, $* ও $@ এমন স্পেশাল প্যারামিটার, যারা ডাবল কোটে আবদ্ধ হওয়ার আগ পর্যন্ত একই রকম প্রতিক্রিয়া দেখায়। আমরা অজানা সংখ্যক কম্যান্ড লাইন আর্গুমেন্টের প্রক্রিয়ার জন্য $* বা $@ যেকোনো স্পেশাল প্যারামিটার দিয়ে সেল স্ক্রিপ্ট লিখতে পারি।


#!/bin/sh
 
for TOKEN in $*
do
   echo $TOKEN
done

 

উপরের স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন


$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

 

এক্সিট স্ট্যাটাস

$?চলক পূর্ববর্তী কম্যান্ডের এক্সিট স্ট্যাটাস নির্দেশ করে। এক্সিট স্ট্যাটাস হল একপ্রকারের নিউমেরিক্যাল মান যা কম্যান্ড সম্পন্ন হওয়ার সাথে সাথে আবর্তিত হয়।

নিচে সফল কম্যান্ডের উদাহরণ দেয়া হল,


$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$


 

ইউনিক্সঃ সেল ভেরিয়েবল বা চলক ব্যবহার করা (Unix – Using Shell Variables)

Huge Sell on Popular Electronics

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

 

ভেরিয়েবল বা চলক একপ্রকারের ক্যারেক্টার স্ট্রিং যেটিতে আমরা মান আরোপ করি। এই মান সংখ্যা, টেক্সট, ফাইলনেম, ডিভাইস বা যেকোনো ডাটাও হতে পারে। চলক আসলে মূল ডাটার নির্দেশক বই কিছু নয়।

 

চলকের নাম

চলকের নাম অক্ষর, সংখ্যা বা আন্ডারস্কোর বিশিষ্ট হতে পারে। ইউনিক্স সেল চলকের নাম বড় হাতের অক্ষরের হয়।

নিচের উদাহরণ চলকের গ্রহণযোগ্য উদাহরণ


_ALI
TOKEN_A
VAR_1
VAR_2

 

আবার নিচের উদাহরণ চলকের গ্রহণযোগ্য উদাহরণ না।


2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

এক্ষেত্রে !,*, বা – ব্যবহার করা যাবে না বলেই এটি বৈধ উদাহরণ না। সেলের ক্ষেত্রে এগুলোর স্বতন্ত্র মানে দাঁড়ায়।

 

চলক বিবৃতি

চলককে নিচের কোড দ্বারা বিবৃত করা হয়।


variable_name=variable_value


 

উদাহরণস্বরূপ,


NAME="Zara Ali"


 

এই উদাহরণে NAME হল চলক আর "Zara Ali" হল এতে আরোপিত মান। এধরনের চলককে স্কেলার চলক বলে, একক সময়ে এগুলো একটি মাত্র মান ধারণ করে।

চলকে আমরা যে মান চাই সেল তাই সংরক্ষণের সুযোগ দেয়। যেমন,


VAR1="Zara Ali"
VAR2=100

 

মানে প্রবেশ করা

চলকে সংরক্ষিত মানে প্রবেশ করতে হলে নামের সাথে ( $) চিহ্ন ব্যবহার করতে হয়।

যেমন,


#!/bin/sh
NAME="Zara Ali"
echo $NAME

 

উপরের কোড যে ফলাফল দেখাবে তা হল,


ZaraAli


 

রিড অনলি চলক

readonly কম্যান্ড দ্বারা নির্ধারিত এই চলকের মান পরবর্তীতে আর পরিবর্তন করা যায় না।

 

যেমন নিচের উদাহরণে কোনও নামের মান পরিবর্তন করলে তা ভুল চলক হয়ে যাবে।


#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

 

যার ফলে যে ফলাফল হবে তা হল,


/bin/sh: NAME:This variableis read only.

 

আনসেটিং চলক

কোনও চলককে আনসেট করার পর সেটিতে আর কোনও মান আরোপ করা যায় না।

নিচের উদাহরণে unset কম্যান্ড ব্যবহার করে বিবৃত চলককে আনসেট করার সিনট্যাক্স ব্যবহার করা হয়,


 unset variable_name

 

নিচে এর একটি উদাহরণ দেয়া যাক,

#!/bin/sh


NAME="Zara Ali"
unset NAME
echo $NAME

 

চলকের প্রকারভেদ

সেল সক্রিয় থাকার সময় তিন প্রকারের চলক দেখা যায়,

  • লোকাল চলক,
  • এনভায়রনমেন্ট চলক,
  • সেল চলক।

 

ইউনিক্সঃ vi এডিটর টিউটোরিয়াল । UNIX VI Editor Tutorial

Huge Sell on Popular Electronics

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

 

ইউনিক্সে ফাইল এডিটের জন্য অনেক উপায় আছে যার মধ্যে খুব ভাল একটি হল স্ক্রীনভিত্তিক এডিটর, vi। এটি ফাইলের অন্য লাইনের কনটেক্সটে লাইন এডিট করার সুযোগ দিয়ে থাকে। বর্তমানে এই এডিটরের উন্নত সংস্করণ VIM ভার্সন যা কিনা সবচেয়ে উপযোগী ভার্সন হিসেবে চিহ্নিত হচ্ছে কারণ,

  • এটি ইউনিক্স সংশ্লিষ্ট সব অনুসঙ্গে উপযোগী
  • এর প্রায়োগিক দিকগুলো বোর্ডের জন্য বিশেষ উপযোগী
  • এটির অনেক কম রিসোর্স লাগে
  • এটি অন্যান্য এডিটরের চেয়ে অনেক বেশি ইউজার ফ্রেন্ডলি

 

vi এডিটর শুরু করা

নিচের উপায়েগুলোর মাধ্যমে vi এডিটর ব্যবহার শুরু করা যায়,

কম্যান্ড
vi filename
vi -R filename
view filename

নতুন testfile নামক ফাইল তৈরির জন্য,


$vi testfile

 

এর ফলাফলে স্ক্রীনে আমরা যা দেখতে পাব তা হল,


|
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 "testfile" [New File]

 

অপারেশন মোড

vi এডিটর দ্বারা কাজ করার সময় আমরা দুটি মোড দেখতে পাব,

  • কম্যান্ড মোড
  • ইনসার্ট মোড

 

vi এডিটর থেকে বেরিয়ে আসতে

সেভ না করে বেরিয়ে আসতে q! কম্যান্ড, সেভ করতে w কম্যান্ড আর সেভ করে বেরিয়ে আসার জন্য সবচেয়ে সহজ কম্যান্ড ZZ কম্যান্ড আমরা ব্যবহার করতে পারি।

 

ফাইলের পরিসরে মুভ করা

নিচে কয়েকটি কম্যান্ড দেয়া হল যার মাধ্যমে কোনও ক্যারেক্টারকে আমরা ফাইলের পরিসরে মুভ করাতে পারি।

কম্যান্ড বর্ণনা
k কার্সরকে এক লাইন উপরে উঠায়
j কার্সরকে এক লাইন নিচে নামায়
h কার্সরকে এক ক্যারেক্টার বামে সরায়
l কার্সরকে এক ক্যারেক্টার ডানে সরায়

খেয়াল রাখতে হবে,

  • vi এডিটর কেস সেন্সেটিভ
  • কম্যান্ড প্রেফারেন্স একশন সংখ্যার উপর নির্ভর করে

ফাইল মুভ করানোর আরও কিছু কম্যান্ড আছে, যেগুলো মোটামুটিভাবে এগুলোঃ

কম্যান্ড
0 or |
$
w
b
(
)
E
{
}
[[
]]
n|
1G
G
nG
:n
fc
Fc
H
nH
M
L
nL
😡

 

কন্ট্রোল কম্যান্ড

কন্ট্রোল কী এর সাথে ব্যবহার করা যায় এমন কিছু কম্যান্ড নিচে দেয়া হল,

কম্যান্ড
CTRL+d
CTRL+d
CTRL+f
CTRL+u
CTRL+b
CTRL+e
CTRL+y
CTRL+u
CTRL+d
CTRL+b
CTRL+f
CTRL+I

 

ফাইল এডিট করা

ফাইল এডিট করতে ইনসার্ট মোডে থাকতে হয়। কম্যান্ড মোড থেকে ইনসার্ট মোডে যেতে কয়েকটি কম্যান্ড আছে,

কম্যান্ড
i
I
a
A
o
O

 

ক্যারেক্টার ডিলিট করতে

ওপেন করা ফাইল থেকে লাইন ও ক্যারেক্টার ডিলিট করতে প্রয়োজনীয় কম্যান্ডের লিস্ট নিচে দেয়া হল,

কম্যান্ড
x
X
dw
d^
d$
D
dd

 

চেঞ্জ কম্যান্ড

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

কম্যান্ড
cc
cw
r
R
s
S

 

কপি ও পেস্ট কম্যান্ড

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

কম্যান্ড
yy
yw
p
P

 

এডভান্সড কম্যান্ড

vi এডিটরে আরও কিছু এডভান্সড কম্যান্ড এর ব্যবহারকে আরও ফলপ্রসূ করে তুলছে-

কম্যান্ড
J
<<
>>
~
^G
U
u
J
:f
:f filename
:w filename
:e filename
:cd dirname
:e #
:n
:p
:N
:r file
:nr file

 

ওয়ার্ড ও ক্যারেক্টার সার্চ করতে

সার্চের সময় দুটি কম্যান্ডে ব্যতিক্রম ঘটে,

  • / command ফাইলে ফরোয়ার্ড(ডাউনওয়ার্ড) সার্চ ও
  • ? command ফাইলে ব্যাকওয়ার্ড(আপওয়ার্ড) সার্চ সম্পাদন করে

সার্চ কম্যান্ডের কিছু অনুষঙ্গ নিচে দেয়া হল,

ক্যারেক্টার
^
.
*
$
[
<
>

 

সেট কম্যান্ড

সেট কম্যান্ডের জন্য কম্যান্ড মোডে ফিরে এসে নিচের যে কোনও কম্যান্ড ব্যবহার করে আমরা vi স্ক্রীনের চেহারা ও অনুভূতি পরিবর্তন করতে পারি,

কম্যান্ড
:set ic
:set ai
:set noai
:set nu
:set sw
:set ws
:set wm
:set ro
:set term
:set bf

 

কম্যান্ড রান করানো

vi এডিটরে প্রক্রিয়াধীন প্রকল্পকেও কম্যান্ড দ্বারা রান করানো যায়।

 

টেক্সট রিপ্লেস করা

নিচের কোড ব্যবহার করে শব্দ বা শব্দসমষ্টিকে রিপ্লেস করানো যায়,


:s/search/replace/g


 

 

মনে রাখা দরকার,

  • কম্যান্ড ব্যবহারের জন্য কম্যান্ড মোড ব্যবহার করা দরকার
  • সব কম্যান্ডের জন্য কেস(ক্যাপিটালাইজেশন) সচেতন থাকা দরকার
  • টেক্সট প্রবেশ করাতে ইনসার্ট মোডে থাকতে হবে

 

ইউনিক্সঃ সেল কি? (Unix – What is Shells?)

Huge Sell on Popular Electronics

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

 

সেল প্রোগ্রামারকে ইউনিক্স সিস্টেম ব্যবহার করার সুযোগ করে দেয়। এটি ব্যবহারকারীর কাছ থেকে ইনপুট সংগ্রহ করে এবং তার ভিত্তিতে প্রোগ্রামকে সম্পন্ন করে থাকে। প্রোগ্রামের সম্পাদনা শেষ হলে এটি আউটপুট রূপে উপস্থাপিত হয়।

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

 

সেল প্রম্পট

$ দ্বারা কম্যান্ড প্রম্পট বোঝায়, এটি সেলের মাধ্যমে প্রবর্তিত হয়ে থাকে। কীবোর্ডে এন্টার চাপার পর সেল ইনপুট পড়তে পারে। ইনপুটের প্রথম শব্দ দেখেই সেল কম্যান্ড সম্পর্কে ধারণা পেয়ে যায়। শব্দ মূলত নিরবচ্ছিন্ন ক্যারেকটারের সেট, স্পেস এবং ট্যাব যাদেরকে পৃথক করে রাখে।

নিচের উদাহরণে ডেট কম্যান্ডের উদাহরণ দেয়া হল,


$date
ThuJun2508:30:19 MST2009

কম্যান্ড প্রম্পটকে পরিবেশ চলকের মাধ্যমে কাস্টমাইজ করা যায়।

 

সেল টাইপ

ইউনিক্সে প্রধানত দুই ধরণের সেল টাইপ আছে,

  • বর্ন সেল
  • সি সেল

এদের মধ্যে বর্ন সেল আবার কয়েক রকমের হয়,

  • বর্ন সেল,
  • কর্ন সেল,
  • বর্ন এগেইন সেল,
  • পিওসিক্স সেল।

কয়েকটি সি টাইপ সেল হল,

  • সি সেল
  • টেনেক্স/টপস সি সেল

মূল ইউনিক্স সেল স্টিফেন বার্নের উদ্ভাবিত ধারণা, ৭০এর দশকের মাঝামাঝি তিনি নিউ জার্সির এটিএন্ড টি বেল ল্যাবে থাকার সময় এটি লেখেন।

 

সেল স্ক্রিপ্টস

সেল স্ক্রিপ্টস এর মূল ধারণা হল কম্যান্ডের লিস্ট, যা সম্পাদনার ক্রমানুসারে সজ্জিত থাকে। আদর্শ সেল স্ক্রিপ্টে ধাপ গুলো # চিহ্ন দ্বারা সজ্জিত থাকে।

 

পরীক্ষামূলক স্ক্রিপ্ট

.sh এক্সটেনশন দ্বারা এটিকে বোঝানো হয়, এক্ষেত্রে সিস্টেমকে নিম্নোক্ত কোডের মাধ্যমে আগেই জানাতে হয় যে এরকমের একটি স্ক্রিপ্ট চালু করা হচ্ছে।


 #!/bin/sh

 

এই ধরণের স্ক্রিপ্ট চালুর জন্য আগে সেবাং (shebang) লাইন এবং তার পর কম্যান্ড যোগ করতে হয়।


#!/bin/bashpwdls

 

সেল কম্যান্ড

স্ক্রিপ্টে নিম্নোক্ত ভাবে কম্যান্ড লেখা যায়,


#!/bin/bash
 
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls

উপরের উপাদানগুলো সংরক্ষণ করে স্ক্রিপ্টকে সম্পাদনযোগ্য করা হয়,


$chmod+x test.sh

 

এখন সম্পাদনযোগ্য সেল স্ক্রিপ্ট পাওয়া গেলো,


$./test.sh

 

যা থেকে নিম্নোক্ত ফলাফল পাওয়া যায়,


/home/amrood
index.htm  unix-basic_utilities.htm  unix-directories.htm  
test.sh    unix-communication.htm    unix-environment.htm

বর্তমান ডিরেক্টরিতে থাকা কোনও প্রোগ্রাম সম্পাদনের জন্য ./program_name ব্যবহার করা হয়।

 

এক্সটেনডেড সেল স্ক্রিপ্ট

নিচের কম্যান্ড read কম্যান্ড ব্যবহার করে যা কীবোর্ড থেকে ইনপুট নেয় এবং PERSON চলকের মান বিবৃত করে ও STDOUT এ মুদ্রিত করে।


#!/bin/sh
 
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
 
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

 

স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন,


$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$

 

ইউনিক্স – নেটওয়ার্ক কমিউনিকেশন অনুষঙ্গ (Unix – Network Communication Utilities)

Huge Sell on Popular Electronics

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

 

বণ্টনকৃত পরিবেশে কাজ করার সময় রিমোট ইউজারদের সাথে যোগাযোগ করতে অতে পারে, রিমোট ইউনিক্স মেশিনেও প্রবেশযোগ্যতা থাকতে হবে।

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

 

পিং ইউটিলিটি

পিং কম্যান্ড নেটওয়ার্কে পাওয়া হোষ্টে একটি ইকো রিকোয়েস্ট পাঠায়। রিমোট হোষ্ট সঠিকভাবে সাড়া দিচ্ছে কিনা তা এই কম্যান্ড ব্যবহার করে আমরা জানতে পারি। পিং কম্যান্ড যেসব ক্ষেত্রে গুরুত্বপূর্ণ সেগুলো হল,

  • হার্ডওয়ার ও সফটওয়ারের সমস্যা নির্ণয় ও পৃথক করা,
  • বিভিন্ন নেটওয়ার্ক ও ফরেন হোষ্টের স্ট্যাটাস নির্ণয় করা,
  • নেটওয়ার্ক টেস্ট, পরিমাপ ও নিয়ন্ত্রণ করা।

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


$ping hostnameor ip-address


 

এই কম্যান্ড প্রতি সেকেন্ডে একটি করে রেসপন্স প্রিন্ট করা শুরু করবে। এটি থামাতে CNTRL + C কী চাপতে হয়।

নেটওয়ার্কে পাওয়া হোষ্টের প্রাপ্যতা জানতে নিচের উদাহরণ সাহায্য করবে,


$ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from 74.125.67.100: icmp_seq=1 ttl=54 time=39.4 ms
64 bytes from 74.125.67.100: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 74.125.67.100: icmp_seq=3 ttl=54 time=39.3 ms
64 bytes from 74.125.67.100: icmp_seq=4 ttl=54 time=39.1 ms
64 bytes from 74.125.67.100: icmp_seq=5 ttl=54 time=38.8 ms
--- google.com ping statistics ---
22 packets transmitted, 22 received, 0% packet loss, time 21017ms
rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms
$

 

হোষ্ট পাওয়া না গেলে এটি যে ধরণের ব্যবহার করবে তা হল,


$ping giiiiiigle.com
ping: unknown host giiiiigle.com
$

 

এফটিপি ইউটিলিটি

এফটিপি বা ফাইল ট্রান্সফার প্রটোকল এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল আপলোড বা ডাউনলোড করতে সাহায্য করে।

এফটিপির নিজস্ব ইউনিক্স টাইপ কম্যান্ড আছে যা আমাদেরকে নিচের কাজগুলো করতে সাহায্য করে।

  • রিমোট হোষ্টে সংযুক্ত থাকা ও লগইন করা,
  • ডিরেক্টরি নেভিগেট করা,
  • ডিরেক্টরি কন্টেন্ট তালিকাবদ্ধ করা,
  • ফাইল রাখা ও পাওয়া,
  • ascii, ebcdic বা binary ফাইল ট্রান্সফার করা।

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


 $ftp hostnameor ip-address

 

প্রয়োজনীয় কম্যান্ডের কয়েকটি নিচে লিপিবদ্ধ হল।

 

কম্যান্ড বর্ণনা
put filename লোকাল মেশিন থেকে রিমোট মেশিনে ফাইলনেম আপলোড করা
get filename রিমোট মেশিন থেকে লোকাল মেশিনে ফাইলনেম ডাউনলোড করা
mput file list লোকাল মেশিন থেকে রিমোট মেশিনে একাধিক ফাইল আপলোড করা
mget file list রিমোট মেশিন থেকে লোকাল মেশিনে একাধিক ফাইল ডাউনলোড করা
prompt off প্রম্পট বন্ধ করা
prompt on প্রম্পট চালু করা
dir রিমোট মেশিনের কারেন্ট ডিরেক্টরিতে থাকা সব ফাইল তালিকাবদ্ধ করা
cd dirname ডিরেক্টরিকে রিমোট মেশিনের dirname তে পরিণত করা
lcd dirname ডিরেক্টরিকে লোকাল মেশিনের dirname তে পরিণত করা
quit কারেন্ট লগইন থেকে লগআউট করা

 

কিছু কম্যান্ডের উদাহরণ নিচে দেয়া হল,


$ftp amrood.com
Connected to amrood.com.
220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009)
Name (amrood.com:amrood): amrood
331 Password required for amrood.
Password:
230 User amrood logged in.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 1464
drwxr-sr-x   3 amrood   group       1024 Mar 11 20:04 Mail
drwxr-sr-x   2 amrood   group       1536 Mar  3 18:07 Misc
drwxr-sr-x   5 amrood   group        512 Dec  7 10:59 OldStuff
drwxr-sr-x   2 amrood   group       1024 Mar 11 15:24 bin
drwxr-sr-x   5 amrood   group       3072 Mar 13 16:10 mpl
-rw-r--r--   1 amrood   group     209671 Mar 15 10:57 myfile.out
drwxr-sr-x   3 amrood   group        512 Jan  5 13:32 public
drwxr-sr-x   3 amrood   group        512 Feb 10 10:17 pvm3
226 Transfer complete.
ftp> cd mpl
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 7320
-rw-r--r--   1 amrood   group       1630 Aug  8 1994  dboard.f
-rw-r-----   1 amrood   group       4340 Jul 17 1994  vttest.c
-rwxr-xr-x   1 amrood   group     525574 Feb 15 11:52 wave_shift
-rw-r--r--   1 amrood   group       1648 Aug  5 1994  wide.list
-rwxr-xr-x   1 amrood   group       4019 Feb 14 16:26 fix.c
226 Transfer complete.
ftp> get wave_shift
200 PORT command successful.
150 Opening data connection for wave_shift (525574 bytes).
226 Transfer complete.
528454 bytes received in 1.296 seconds (398.1 Kbytes/s)
ftp> quit
221 Goodbye.
$

 

টেলনেট ইউটিলিটি

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


C:>telnet amrood.com
Trying...
Connected to amrood.com.
Escape character is '^]'.
 
login: amrood
amrood's Password: 
*****************************************************
*                                                   *
*                                                   *
*    WELCOME TO AMROOD.COM                          *
*                                                   *
*                                                   *
*****************************************************
 
Last unsuccessful login: Fri Mar  3 12:01:09 IST 2009
Last login: Wed Mar  8 18:33:27 IST 2009 on pts/10
 
   {  do your work }
 
$ logout
Connection closed.
C:>

 

ফিঙ্গার ইউটিলিটি

ফিঙ্গার কম্যান্ড প্রদত্ত হোষ্টে ব্যবহারকারীর তথ্য প্রদর্শন করে। ফিঙ্গার কম্যান্ডের সিনট্যাক্স এরকম,

লোকাল মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

লোকাল মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে


$ finger amrood
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

রিমোট মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger @avtar.com
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

রিমোট মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে,


$ finger amrood@avtar.com
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

ইউনিক্স প্রসেস ম্যানেজমেন্ট (Unix – Processes Management)

Huge Sell on Popular Electronics

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

 

ইউনিক্স সিস্টেমে প্রোগ্রাম রান করানোর সময় সিস্টেম প্রোগ্রামের উপযুক্ত পরিবেশ তৈরি করে নেয়। অপারেটিং সিস্টেম pid বা প্রসেস আইডি দ্বারা প্রসেসকে ট্র্যাক করে।

 

প্রসেস শুরু করা

প্রসেস শুরু বা রান করানোর সময় দুই ভাবে আমরা এটি করতে পারি,

  • ফোরগ্রাউন্ড প্রক্রিয়ায় ও
  • ব্যাকগ্রাউন্ড প্রক্রিয়ায়

 

ফোরগ্রাউন্ড প্রক্রিয়া

ফোরগ্রাউন্ড প্রক্রিয়ায় সব ফাইলকে ডিরেক্টরিতে তালিকাবদ্ধ দেখতে চাইলে যে কম্যান্ড ব্যবহার করতে হবে তা হল,


$ls ch*.doc

 

.doc দ্বারা শেষ হওয়া নামের সব ফাইল এখানে দেখাবে,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

 

ব্যাকগ্রাউন্ড প্রক্রিয়া

এটি শুরু করার জন্য কমান্ডে ( &) চিহ্ন ব্যবহার করা হয়,


$ls ch*.doc
&

 

ch দ্বারা শুরু ও .doc দ্বারা শেষ এমন নামের ফাইলের জন্য,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc


 

এবার এন্টার চাপলে আমরা দেখতে পাব,


[1]  +  Done                 ls ch*.doc&
$

 

রানিং প্রক্রিয়া লিস্টিং করা

ps কম্যান্ড ব্যবহার করে আমরা এটি করতে পারব,


$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

 

ps এর জন্য সবচেয়ে বেশি ব্যবহৃত ফ্ল্যাগ হল –f,


$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

 

–f কম্যান্ডের অধীনে থাকা সব ফিল্ডের তালিকা,

 

ফিল্ডের তালিকা
UID
PID
PPID
C
STIME
TTY
TIME
CMD

 

ps কম্যান্ডের সাথে ব্যবহৃত হয় এমন আরও কিছু অপশন হল,

 

অপশন
-a
-x
-u
-e

 

প্রসেস থামাতে

কীবোর্ড থেকে CTRL + C চেপে বা ps কম্যান্ড ব্যবহারের পর kill কম্যান্ড ব্যবহার করে প্রসেস থামানো যায়,


$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated

 

যেমন, নিচের উদাহরণে kill -9 কম্যান্ড ব্যবহার করা হয়েছে।


$kill-96738
Terminated

 

কয়েক ধরণের প্রসেস যা ইউনিক্সে অন্তর্ভুক্ত হতে পারে এদের নিচে দেয়া হল,

  • প্যারেন্ট ও চাইল্ড প্রসেস,
  • জম্বি এবং অরফান প্রসেস,
  • ডেমন প্রসেস

 

টপ কম্যান্ড

বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রসেস প্রদর্শনের জন্য টপ কম্যান্ড খুব সুবিধাজনক।

জব আইডি বনাম প্রসেস আইডিঃ ব্যাকগ্রাউন্ড আর সাসপেন্ডেড প্রসেস জব নাম্বারের মাধ্যমে সম্পন্ন হয়,এটি প্রসেস আইডি থেকে ভিন্ন কারণ এটি একটু ছোট।

 

ইউনিক্সঃ পাইপ এবং ফিল্টার (Unix – Pipes and Filters)

Huge Sell on Popular Electronics

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

 

ইউনিক্সে দুটি কম্যান্ড এমনভাবে সংযুক্ত করা যায় যাতে এক প্রোগ্রামের আউটপুট অন্য প্রোগ্রামের ইনপুট হিসেবে ব্যবহৃত হতে পারে। পাইপ থেকে দুই বা ততোধিক প্রোগ্রাম এভাবে সংযুক্ত হতে পারে।

কম্যান্ড লাইনে দুটি কম্যান্ডের মাঝে উল্লম্ব (|) কম্যান্ড ব্যবহার করে পাইপ করা যায়। এক প্রোগ্রাম অন্য প্রোগ্রামের থেকে ইনপুট

নিয়ে আদর্শ আউটপুট দেখালে তাকে filter হিসেবে দেখানো হয়।

 

গ্রেপ কম্যান্ড

এটি নির্দিষ্ট লাইন প্যাটার্নের সন্ধান করে, এর সিনট্যাক্স হল,


$grep pattern file(s)

 

গ্রেপকে ফাইলনেম না দিলে এটি পুরো স্ট্যান্ডার্ড ইনপুটকে পড়ে, আর এভাবেই সকল ফিল্টার প্রোগ্রাম কাজ করে,


$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

গ্রেপ কম্যান্ডের সাথে কাজ করে এমন কয়েকটি অপশন,

 

অপশন
-v
-n
-l
-c
-i

 

কেস ইনটেনসিভ সার্চের জন্য -i অপশন ব্যবহার করতে পারি,


$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

সর্ট কম্যান্ড

সর্ট কম্যান্ড টেক্সটের লাইনকে এলফাবেটিকেলি বা নিউমেরিকালি সজ্জিত করে,


$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$

 

সর্টিং কন্ট্রোলের জন্য কিছু অপশন আছে,

অপশন
-n
-r
-f
+x

 

নিচের পাইপ ls, grep, এবং sort এসব কম্যান্ডের সমন্বয়ে হয়ে থাকে,


$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$

pg ও অন্যান্য কম্যান্ড

লং ডিরেক্টরি লিস্টিংকে সহজ সর্টেড লিস্টিং করতে more কম্যান্ড দ্বারা আউটপুটকে পাইপ করাতে হয়,


$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
        .
        .
        .
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)

এরপর ফাইলসাইজ দ্বারা সর্টেড টেক্সটে স্ক্রিন ফিলআপ হয়ে যাবে, এরপর অন্য যেকোনো প্রোগ্রামের জন্য কম্যান্ড লিস্টেড করা যাবে ইউনিক্স ব্যবহার করে।

 

ইউনিক্স বেসিক ইউটিলিটিঃ প্রিন্টিং, ইমেইল (Unix Basic Utility, Printing, Email)

Huge Sell on Popular Electronics

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

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

ফাইল প্রিন্ট করা

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

ইউনিক্সের অনেক ভার্সন nroff এবং troff দুটি শক্তিশালী টেক্সট ফরম্যাটার ব্যবহার করতে দেয়, আমরা এখানে এগুলো সম্পর্কে আলোচনা না করলেও ইন্টারনেটে এদের নিয়ে অনেক টিউটোরিয়াল পাওয়া যায়, সেগুলো অনেক হেল্পফুলএসব ইউটিলিটির জন্য।

pr কম্যান্ড

pr কম্যান্ড টার্মিনাল স্ক্রিন বা প্রিন্টারের জন্য ছোটখাটো ফরম্যাটিং করে থাকে, যেমন যদি কোনও ফাইলে নামের লম্বা লিস্ট থেকে থাকে তাহলে আমরা স্ক্রিনে সেগুলোকে দুই বা ততোধিক কলামে ভাগ করে দিতে পারি।
pr কম্যান্ডের সিনট্যাক্স নিচে দেয়া হল,


pr option(s) filename(s)


pr কম্যান্ড স্ক্রিনে বা প্রিন্টেড কপিতে পরিবর্তন ও ফরম্যাটিং করে থাকে, এটি মূল ফাইলে কোনও পরিবর্তন সাধন করে না।
কিছু pr কম্যান্ড অপশন নিচের ছকে দেখানো হল।

অপশন বর্ণনা
-k আউটপুটে k কলাম গঠন করে
-d আউটপুটে ডবল স্পেস(সবpr ভার্সনে নয়)
-h "header" পরবর্তী আইটেমকে রিপোর্টার হিডার হিসেবে নেয়
-t টপ ও বটম মার্জিন ও হিডার বাদ দেয়
-l PAGE_LENGTH পেজলেন্থ নির্ধারণ করে PAGE_LENGTH (66) lines. টেক্সটের ডিফল্ট লাইন নাম্বার ৫৬
-o MARGIN মার্জিন স্পেস দ্বারা প্রতি লাইনকে অফসেট করানো।
-w PAGE_WIDTH পেজের উইডথ নির্ধারণ করে PAGE_WIDTH (72) characters মাল্টিপল টেক্সট কলাম আউটপুটের জন্য

উদাহরণস্বরূপ, food নামের একটি স্যাম্পল ফাইলের জন্য,


 $cat food
 Sweet Tooth
 Bangkok Wok
 Mandalay
 Afghani Cuisine
 Isle of Java
 Big Apple Deli
 Sushi and Sashimi
 Tio Pepe's Peppers
 ........
 $

Restaurants হিডারে pr কম্যান্ড ব্যবহার করে দুই কলামে রিপোর্ট লিখলে,


$pr -2 -h "Restaurants" food
Nov  7  9:58 1997  Restaurants   Page 1

Sweet Tooth              Isle of Java
Bangkok Wok              Big Apple Deli
Mandalay                 Sushi and Sashimi
Afghani Cuisine          Tio Pepe's Peppers
........
$


 

lp বা lpr কমান্ড

lp বা lpr কমান্ড কোনও ফাইল স্ক্রিনের পরিবর্তে কাগজে প্রিন্টের জন্য ব্যবহৃত হয়। ডিফল্ট প্রিন্টারে কোনও নির্দিষ্ট ফাইল প্রিন্ট করার জন্য lp বা lpr কমান্ড ব্যবহার করতে হয় যেমন food নামের স্যাম্পল ফাইলের জন্য


$lp food
request id is laserp-525 (1 file)
$


lpstat ও lpq কম্যান্ড

lpstat কম্যান্ড নির্দেশ করে প্রিন্টারে কোন কোন ডাটা সারিবদ্ধ আছে যেমন রিকুয়েস্ট আইডি, ওউনার, ফাইল সাইজ এসব। নিজের আউটপুট রিকোয়েস্ট ছাড়া অন্য সব রিকোয়েস্ট দেখতে lpstat –o কম্যান্ড ব্যবহার করা যায়।


$lpstat -o
laserp-573 john  128865 Nov 7 11:27 on laserp
laserp-574 grace  82744 Nov 7 11:28
laserp-575 john   23347 Nov 7 11:35
$


lpq, lpstat –o থেকে একটু ভিন্ন ধরণের তথ্য দেয়,


$lpq
laserp is ready and printing
Rank   Owner      Job Files                 Total Size
active john       573 report.ps             128865 bytes
1st    grace      574 ch03.ps ch04.ps       82744 bytes
2nd    john       575 standard input        23347 bytes
$


এখানে প্রথম লাইন প্রিন্টার স্ট্যাটাস বুঝায়, প্রিন্টার অকেজো বা কাগজ না থাকলে প্রথম লাইনে অন্য ম্যাসেজ আসবে।

cancel ও lprm কম্যান্ড

cancel কম্যান্ড lp কম্যান্ড থেকে প্রিন্টিং রিকোয়েস্ট বাদ দেয়, lprm lpr রিকোয়েস্ট বাদ দেয়।


$cancel laserp-575
 request "laserp-575" cancelled
 $

প্রিন্ট হচ্ছে এমন রিকোয়েস্ট বাতিল করতে শুধু নিচের কোড প্রবেশ করাতে হবে,


$cancel laserp
 request "laserp-573" cancelled
 $

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


$lprm 575
 dfA575diamond dequeued
 cfA575diamond dequeued
 $

 

 

ইমেইল প্রেরণ

ইমেইল প্রেরণের সিনট্যাক্স হল,


$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

মেইল কম্যান্ডের গুরুত্বপূর্ণ অপশনগুলো হল,

অপশন বর্ণনা
-s কম্যান্ড লাইনে বিষয় নির্ধারণ
-c ইউজার লিস্ট কার্বন কপি করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে
-b লিস্টে ব্লাইন্ড কার্বন কপি প্রেরণ করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে

যেমন, admin@yahoo.com তে টেস্ট ম্যাসেজ পাঠাতে কোড,


$mail -s "Test Message" admin@yahoo.com

লাইনের শুরুতে "control-D" ব্যবহার করে ম্যাসেজ লিখতে হবে, এটি বন্ধ করতে শুধু dot (.) নিচের মত করে লিখতে হবে,


Hi,
This is a test
.
Cc:

নিচের কোড ব্যবহার করে সম্পূর্ণ ফাইল প্রেরণ করা যায়,


$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt

ইনকামিং মেইল চেক করতে ইউনিক্স সিস্টেমে নিচের কোড ব্যবহার করতে হয়,


 $mail
 no email

 

ইউনিক্স – এনভায়রনমেন্ট (Unix – Environment)

Huge Sell on Popular Electronics

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

 

ইউনিক্সের একটি গুরুত্বপূর্ণ ধারণা হল এর এভায়রনমেন্ট , যা এভায়রনমেন্ট চলকের মাধ্যমে বিবৃত হয়। এদের কয়েকটি সিস্টেমের মাধ্যমে, কয়েকটি সেলের মাধ্যমে, কয়েকটি আমাদের অর্থাৎ ব্যবহারকারীদের মাধ্যমে আর কয়েকটি এমন প্রোগ্রামের মাধ্যমে যা কিনা অন্য প্রোগ্রাম সেট করে।

চলক হল ক্যারেক্টার স্ট্রিং যার উপর আমরা মান আরোপ করি, যা সংখ্যা হতে পারে, টেক্সট, ফাইলনেম, ডিভাইস অথবা অন্য কোনও রকমের ডাটাও হতে পারে।

যেমন, TEST নামের চলক সেট করে তাতে echo কম্যান্ড ব্যবহার করে মান আরোপ করতে,


$TEST="Unix Programming"
$echo $TEST
Unix Programming

 

সিস্টেমে লগইনের সময় এই সংশ্লিষ্ট দুটি প্রক্রিয়া হয়,

  • /etc/profile
  • profile

এই প্রক্রিয়া যে কর্মসূচি অনুসরণ করে তা হল,

  • সেল চেক করে /etc/profile ফাইল কোথায় আছে
  • এটিকে পাওয়া গেলে সেল এটিকে পড়ে। না পাওয়া গেলে স্কিপ করে যায়, কোনও এরর ম্যাসেজ দেখানো হয় না।
  • সেল চেক করে হোম ডিরেক্টরির কোথায় .profile ফাইল আছে।
  • এটিকে পাওয়া গেলে সেল এটিকেও পড়ে। না পাওয়া গেলে এটিও স্কিপ করে যায়, কোনও এরর ম্যাসেজ দেখানো হয় না।

যখন দুটি ফাইলই পড়া হয়ে যায় তখন সিস্টেম এই প্রম্পট দেখায়,


$

এটি সেই প্রম্পট যেটিতে কোনও কম্যান্ড প্রবেশ করিয়ে সম্পাদন করানো যায়।

.profile ফাইল

ইউনিক্স মেশিনের এডমিন /etc/profile ফাইলের দেখাশোনা করে, আর .profile ফাইল ব্যবহারকারীর দায়িত্বে থাকে, এই ফাইলে যত খুশি সেল কাস্টমাইজেশন তথ্য প্রবেশ করানো যায়, সর্বনিম্ন যে তথ্যগুলো কনফিগার করতেই হবে তা হল,

  • যে টার্মিনাল ব্যবহার করছি তার টাইপ
  • কম্যান্ডের জন্য ডিরেক্টরির লিস্ট
  • টার্মিনালে প্রভাব বিস্তারকারী চলকের তালিকা

 

টার্মিনাল টাইপ ঠিক করা

বেশিরভাগ ইউজার টার্মিনালকে সবচেয়ে কম কমন ডিনমিনেটরে সেট করেন,


$TERM=vt100
$

 

পাথ ঠিক করা

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


$PATH=/bin:/usr/bin
$

 

 

সেলে আবেদনকৃত কোনও কম্যান্ড যদি পাথ চলক নির্দেশিত ডিরেক্টরিতে না পাওয়া যায় তাহলে নিচের মত করে ম্যাসেজ দেখাবে,


$hellohello:not found
$

 

PS1 আর PS2 চলক

সেলের কম্যান্ড প্রম্পট PS1চলকে সংরক্ষিত থাকে,


$PS1='=>'
=>
=>
=>

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

 


=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$

 

PS1 এর ভ্যালু আর্গুমেন্ট হিসেবে ব্যবহার করা যায় এমন কিছু এস্কেপ সিকোয়েন্স নিচে তালিকাবদ্ধ করা হল।

 

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

 

অসমাপ্ত কম্যান্ডের জন্য সেকেন্ডারি প্রম্পট ব্যবহৃত হয়, এর ডিফল্ট সাইন > যা PS2 সেল চলকের পুনর্বিন্যাসের মাধ্যমে পরিবর্তিত হতে পারে,


$ echo "this is a
> test"
this is a
test
$

 

পরিবর্তিত প্রম্পটের দ্বারা PS2কে পুনঃবিবৃত করার উদাহরণ,


$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

পরিবেশ চলক

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

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

 

কিছু পরিবেশ চলকের উদাহরণ,


$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$

 

ইউনিক্সঃ ফাইল পারমিশন ও এক্সেস মোড (Unix – File Permission / Access Modes)

Huge Sell on Popular Electronics

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

 

ফাইল ওনারশিপ ইউনিক্সের একটি গুরুত্বপূর্ণ উপাদান যা ফাইল ষ্টোরের নিরাপদ উপায় হিসেবে প্রয়োজন। ইউনিক্সের প্রত্যেকটি ফাইলে যে এট্রিবিউটগুলো থাকে সেগুলো হল,

  • ওনারের পারমিশন,
  • গ্রুপ পারমিশন,
  • অন্যান্য পারমিশন

 

পারমিশন ইনডিকেটর

ls -l কম্যান্ড ব্যবহার করে পারমিশন সংক্রান্ত অনেক তথ্য দেখা যায়,


$ls -l /home/amrood
-rwxr-xr-- 1 amrood   users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood   users 1024 Nov 2 00:10 mydir

 

read (r), write (w), execute (x) এই অর্ডার ফলো করে

  • প্রথম তিন ক্যারেক্টার ফাইল ওনারের পারমিশন,
  • দ্বিতীয় তিন ক্যারেক্টার গ্রুপ পারমিশন আর
  • শেষ তিন ক্যারেক্টার বাকি সব পারমিশন

 

ফাইল এক্সেস মোড

ইউনিক্সে পারমিশনের বিল্ডিং ব্লক হল এই তিনটি,

  • লেখা
  • পড়া
  • এক্সেকিউট করা

 

ডিরেক্টরি এক্সেস মোড

অন্যান্য ফাইলের মত এদেরও বিল্ডিং ব্লক এগুলোঃ

  • লেখা
  • পড়া
  • এক্সেকিউট করা

যদিও এদের ক্ষেত্রে কিছু মৌলিক পার্থক্য আছে।

 

পারমিশন চেঞ্জ করা

দুটি উপায়ে chmod কম্যান্ড ব্যবহার করে এটি করা যায়,

সিম্বোলিক মোডে chmod কম্যান্ড ব্যবহার করেঃ টেস্টফাইলে ls -1 ব্যবহার করে ফাইলের পারমিশন,


$ls-l testfile
-rwxrwxr--1 amrood   users1024Nov200:10 testfile

 

যার ফলে পারমিশন চেঞ্জ দেখতে পাব,


$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

 

সিঙ্গেল লাইনের কম্যান্ড সমন্বয়ের ক্ষেত্রে,


$chmod o+wx,u-x,g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

 

এবসলিউট পারমিশন হিসেবে chmod কম্যান্ড ব্যবহার করে

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

 

নাম্বার অক্টাল পারমিশন রিপ্রেজেন্টেশন রেফারেন্স
0 No permission ---
1 Execute permission --x
2 Write permission -w-
3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx
4 Read permission r--
5 Read and execute permission: 4 (read) + 1 (execute) = 5 r-x
6 Read and write permission: 4 (read) + 2 (write) = 6 rw-
7 All permissions: 4 (read) + 2 (write) + 1 (execute) = 7 rwx

 

টেস্ট ফাইল ব্যবহারের উদাহরণ,


$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

 

এরফলে আমরা যে পারমিশন চেঞ্জ দেখতে পাব,


$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

 

ওনার পরিবর্তন

chown কম্যান্ড ব্যবহার করে ফাইলের ওনারশিপ পরিবর্তন করতে,


$ chown user filelist

 

উদাহরণ,


$ chown amrood testfile
$

 

এটি প্রদত্ত ফাইলের ওনারকে amrood নামে পরিবর্তিত করে।

 

গ্রুপ ওনার পরিবর্তন

এটির জন্য যে সিনট্যাক্স ব্যবহার করতে হয়,


$ chgrpgroup filelist

 

উদাহরণ,


$ chgrp special testfile
$

যেটিতে প্রদত্ত ফাইলের গ্রুপ special গ্রুপে পরিবর্তিত হয়ে যায়।

 

SUID ও SGID ফাইল পারমিশনঃ

এধরনের কম্যান্ড ব্যবহার করে এ ধরণের পারমিশন সম্পর্কে জানা যায়,


$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

এখানে SUID বিট সেট আর এর কম্যান্ড রুট থেকে আসে।

 

যেকোনো ডিরেক্টরির জন্য SUID ও SGID bits সেট করতে নিচের সিনট্যাক্স প্রয়োগ করা যেতে পারে,


$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$

 

ইউনিক্সঃ ডিরেক্টরি ব্যবস্থাপনা (Unix folder/directory Management)

Huge Sell on Popular Electronics

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

 

ডিরেক্টরি হল একটি ফাইল যার প্রধান কাজ হল ফাইলনেম ও এরকম অন্যান্য তথ্য লিপিবদ্ধ রাখা। সকল ফাইল, তা যেমনই হোক সাধারণ, বিশেষ বা ডিরেক্টরির, তা ডিরেক্টরিতে সংরক্ষিত থাকে।

ফাইল ও ডিরেক্টরি ব্যবস্থাপনার জন্য ইউনিক্স একটি ক্রমবিন্যাসগত কাঠামো ব্যবহার করে। এই কাঠামোকে ডিরেক্টরি ট্রি বলে। এই ট্রিতে সিঙ্গেল রুট নড, স্ল্যাস ক্যারেক্টার ( /) ও অন্যান্য ডিরেক্টরি থাকে যা নিয়ে আমরা নিচে আলোচনা করব।

হোম ডিরেক্টরি

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


 $cd ~
 $

 

এখানে ~ চিহ্ন হোম ডিরেক্টরি নির্দেশক। অন্য কোনও ইউজারনেম ডিরেক্টরিতে যেতে চাইলে,


 $cd ~username
 $

 

সর্বশেষ ডিরেক্টরিতে যেতে চাইলে,


 $cd -
 $

 

পরম/আপেক্ষিক পাথনেম

ডিরেক্টরিগুলো ক্রমবিন্যাসে সজ্জিত, উপরে (/) চিহ্ন নিয়ে। ক্রমবিন্যাসে সজ্জিত যেকোনো ফাইল এর পাথনেম সহ বিবৃত হয়। এবসলিউট ফাইলনেমের উদাহরণ,


 /etc/passwd
 /users/sjones/chem/notes
 /dev/rdsk/Os3

 

কারেন্ট ওয়ার্কিং ডিরেক্টরিতে পাথনেম আপেক্ষিকও হতে পারে। এক্ষেত্রে স্ল্যাস ক্যারেক্টার ( /) সহ শুরু হবে না। এরকম কিছু পাথনেম নিচের মত হতে পারে,


 chem/notes
 personal/res

 

ক্রমবিন্যাসে ঠিক কোথায় অবস্থান করে কাজ করছি তা জানতে কারেন্ট ওয়ার্কিং ডিরেক্টরি প্রিন্ট করতে pwd কম্যান্ড প্রবেশ করাতে হবে।


 $pwd
 /user0/home/amrood
 $

 

লিস্টিং ডিরেক্টরি

ডিরেক্টরিতে ফাইল লিপিবদ্ধ করতে নিচের সিনট্যাক্স ব্যবহৃত হয়,


$ls dirname

 

নিচের উদাহরণে /usr/local ডিরেক্টরিতে লিপিবদ্ধ সব ফাইল দেখানো হল,


X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

 

ডিরেক্টরি তৈরি করা

নিচের কম্যান্ডগুলোর মাধ্যমে ডিরেক্টরি তৈরি করা যায়,


$mkdir dirname

 

যেমন,


 $mkdir mydir
 $

 

এটি কারেন্ট ডিরেক্টরিতে mydir ডিরেক্টরি তৈরি করে। আরেকটি উদাহরণ হল,


$mkdir /tmp/test-dir
$


 

এটি /tmp ডিরেক্টরিতে test-dir ডিরেক্টরি তৈরি করে, এখানে mkdir কম্যান্ড কোনও আউটপুট দেখাবে না। কম্যান্ড লাইনে একটির বেশি ডিরেক্টরি দিলে mkdir প্রত্যেকটি ডিরেক্টরি তৈরি করবে।


$mkdir docs pub
 $

 

প্যারেন্ট ডিরেক্টরি তৈরি করা

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


 $mkdir /tmp/amrood/test
 mkdir: Failed to make directory "/tmp/amrood/test";
 No such file or directory
 $

 

তখন mkdir কম্যান্ডে -p অপশন দ্বারা স্পেসিফাই করা যাবে।


$mkdir -p /tmp/amrood/test
 $

 

ডিরেক্টরি মুছে ফেলা

rmdir কম্যান্ড ব্যবহার করে ডিরেক্টরি মুছে ফেলা যায়,


$rmdir dirname
 $

 

একসাথে অনেকগুলো ডিরেক্টরি তৈরি করতে,


$rmdir dirname1 dirname2 dirname3
 $

 

ডিরেক্টরি পরিবর্তন করা

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


 $cd dirname
 $

 

এখানে dirnameহল সেই ডিরেক্টরির নাম যা আমরা পরিবর্তন করতে চাচ্ছি।


$cd /usr/local/bin
 $

 

এটি directory /usr/local/binতে পরিবর্তন। রিলেটিভ পাথ ব্যবহার করে directory /usr/home/amrood তে পরিবর্তনের জন্য,


$cd ../../home/amrood
 $

 

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

ডিরেক্টরিকে রিনেম করার জন্য mv (move) কম্যান্ড ব্যবহার করা হয় যেমন,


$mv olddir newdir
 $

 

mydir ডিরেক্টরিকে yourdir ডিরেক্টরিতে রিনেম করার জন্য,


$mv mydir yourdir
 $

 

. (dot) ও .. (dot dot) ডিরেক্টরি

একটি কারেন্ট ডিরেক্টরি আর অন্যটি তার এক লেভেল উপরের ডিরেক্টরি নির্দেশ করে। যদি -a অপশন দ্বারা কারেন্ট ডিরেক্টরির সব ফাইল আর –l দ্বারা লং লিস্টিংএর অপশন বুঝাই, তাহলে যে ফলাফল হবে তা এরকম,


$ls -la
drwxrwxr-x   4   teacher  class  2048   Jul 16 17.56 .
drwxr-xr-x   60  root 1          536    Jul 13 14:18 ..
----------   1   teacher  class  4210   May 1 08:27 .profile
-rwxr-xr-x   1   teacher  class  1948   May 12 13:42 memo
$

 

ইউনিক্সঃ ফাইল ব্যবস্থাপনা (Unix – File Management)

Huge Sell on Popular Electronics

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

 

ইউনিক্সে সব ডাটা ফাইলে সজ্জিত থাকে। সব ফাইল ডিরেক্টরিতে সাজানো থাকে। আবার সেই ডিরেক্টরি একটা ট্রি-মতন কাঠামো, যার নাম ফাইল সিস্টেম, এতে সাজানো থাকে। ইউনিক্সে কাজ করার সময় পুরো সময়টা কোনও না কোনও ফাইল নিয়ে কাজ করতে হয়। এই টিউটোরিয়ালে দেখানো হবে কীভাবে ফাইল তৈরি ও মোছা, কপি ও রিনেম আর কীভাবে এতে লিঙ্ক স্থাপন করা হয়।

ইউনিক্সে তিন ধরণের ফাইল দেখা যায়,

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

 

ফাইল লিস্ট করা

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


$ls


 

যার সাধারণ আউটপুট এরকম হতে পারে,


$ls 

bin        hosts   lib     res.03
ch07       hw1     pub     test_results
ch07.bak   hw2     res.01  users
docs       hw3     res.02  work

 

ls কম্যান্ড –l অপশন সমর্থন করে, যা থেকে লিস্টেড ফাইল সম্পর্কে আরও ভালভাবে জানা যায়,


$ls -l
total 1962188
 
drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

 

ফাইল লাইন প্রেফিক্সের মাধ্যমে শুরু হয়, যা থেকে ফাইল টাইপ সম্পর্কে ধারণা করা যায়।

 

প্রেফিক্স
-
b
c
d
l
p
s

 

মেটা ক্যারেক্টার

ইউনিক্সে মেটাক্যারেক্টারের বিশেষ অর্থ থাকে, যেমন,

 


$ls ch*.doc

 

এটি এমন ফাইল দেখায় যাদের নামের শুরু ch ও শেষ .doc দিয়ে,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc c

 

সব ফাইল .doc দিয়ে শেষ করাতে কম্যান্ড ব্যবহার করতে পারি,


$ls*.doc

 

হিডেন ফাইল

এদের প্রথম ক্যারেক্টার dot বা period character (.), এরকম ফাইলের কিছু কমন উদাহরণ,

  • .profile
  • .kshrc
  • .cshrc
  • .rhosts

এসব ফাইল লিস্ট করতে ls −তে -a অপশন স্পেসিফাই করতে হবে,


$ ls -a
 
.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$

 

  • Single dot . মানে কারেন্ট ডিরেক্টরি
  • Double dot .. মানে প্যারেন্ট ডিরেক্টরি

 

ফাইল তৈরি করা

ইউনিক্স সিস্টেমে সাধারণ ফাইল তৈরি করতে vi এডিটর ব্যবহার করা যায়, এই কম্যান্ড ব্যবহার করে।


$ vi filename

 

এডিট মোডে ফাইলে কন্টেন্ট লেখার জন্য কম্যান্ড,


This is unix file....I created it for the first time.....
I'm going to save this content in this file.


 

এডিট মোড থেকে বেরুতেesc এবং ফাইল থেকেই বেরিয়ে আসতেShift + ZZ একসাথে চাপতে হয়।

কারেন্ট ডিরেক্টরিতে filename সহ ফাইল তৈরি করতে,


$ vi filename
$

 

ফাইল এডিট করতে

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


$ vi filename

 

ফাইলের কন্টেন্ট ডিসপ্লে করা

cat কম্যান্ড ব্যবহার করে আমরা এটি করতে পারি,


$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

 

cat কম্যান্ডের সাথে -b অপশন ব্যবহার করে লাইন নাম্বার পেতে পারি,


$ cat -b filename
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

 

ফাইলের শব্দ গণনা করা

এজন্য wc কম্যান্ড ব্যবহার করতে হয়,


$ wc filename
2  19 103 filename
$

 

মাল্টিপল ফাইলের ক্ষেত্রে এটি হবে,


$ wc filename1 filename2 filename3

 

ফাইল কপি করা

cp কম্যান্ড ব্যবহার করে আমরা ফাইল কপি করতে পারি,


$ cp source_file destination_file

 

filename নামের বিদ্যমান ফাইলের ক্ষেত্রে,


$ cp filename copyfile
$

 

ফাইল রিনেম করা

mv কম্যান্ড ব্যবহার করে আমরা ফাইলের নাম রিনেম করতে পারি।


$ mv old_file new_file

 

উদাহরণঃ filename কে newfile এ রিনেম করতে কম্যান্ড,


$ mv filename newfile
$

 

ফাইল ডিলিট করতে

ফাইল ডিলিট করতে rm কম্যান্ড ব্যবহার করতে পারি।এর বেসিক সিনট্যাক্স হল,


$ rm filename

 

 

যেমন, filename নামের ফাইল ডিলিট করতে কম্যান্ড,


$ rm filename
$

 

 

কয়েকটি ফাইল একসাথে ডিলিট করতে কম্যান্ড


$ rm filename1 filename2 filename3
$

 

আদর্শ ইউনিক্স স্ট্রিম

নরমাল অবস্থায় আদর্শ ইউনিক্সে তিনটি স্ট্রিম দেখা যায়,

  • stdin
  • stdout
  • stderr

ইউনিক্স : শুরুর কথা (Unix – Getting Started)

Huge Sell on Popular Electronics

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

 

ইউনিক্স কি ?

ইউনিক্স অপারেটিং সিস্টেম হল প্রোগ্রামের একটি সেট যা কম্পিউটার ও ব্যবহারকারীর মধ্যে লিঙ্ক হিসেবে কাজ করে। এতে ব্যবহারকারী সেল নামের প্রোগ্রামের মাধ্যমে কার্নেলে যোগাযোগ করে। সেল হল কম্যান্ড লাইন ইন্টারপ্রিটার, এটি ইউজারের কম্যান্ড অনুবাদ করে কার্নেলের পাঠযোগ্য ভাষায় পরিবর্তন করে।

  • ১৯৬৯ সালে এটিএন্ডটি কর্মীদের দ্বারা বেল ল্যাবরেটরিতে প্রথম ইউনিক্স ডেভেলাপ করা হয়,
  • ইউনিক্সের বিভিন্ন ভার্সন পাওয়া যায়, 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
$

 

 

কম্যান্ড প্রম্পটের মাধ্যমে কম্যান্ড দেয়া যায় ইউনিক্সে, যেমন ক্যালেন্ডার চেক করার জন্য cal কম্যান্ড দিতে পারি,


$ cal
      June 2009
Su  Mo Tu  We  Th  Fr  Sa
 1   2  3   4   5   6
 7   8  9  10  11  12  13
14  15 16  17  18  19  20
21  22 23  24  25  26  27
28  29 30
$

 

 

পাসওয়ার্ড পরিবর্তন করা

এটি আমরা করতে পারি passwd কম্যান্ড ব্যবহার করে,


$ passwd
Changing password for amrood
(current) Unix password:******
New UNIX password:*******
Retype new UNIX password:*******
passwd: all authentication tokens updated successfully
$

 

 

ফাইল ও ডিরেক্টরি তালিকাবদ্ধ করা

ls কমান্ডে -l অপশন ব্যবহার করে এটি করা যায়, নিচের উদাহরণে ব্যপারটি দেখানো হল,


$ ls -l
total 19621
drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml
-rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg
drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ
drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root 4096 Nov 25 2007 usr
-rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php
-rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar
-rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid
-rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf
$

 

এখানে d..... দ্বারা শুরু হওয়া এন্ট্রি ডিরেক্টরি বুঝায়।

 

Whoami কম্যান্ড

Who am I? প্রশ্নটির উত্তরের জন্য এই কোড ব্যবহার করতে পারি আমরা,


$ whoami
 amrood
$

 

 

লগইন অবস্থায় কে কে আছে

এধরনের তিনটি কম্যান্ড users, who, এবং w, পাওয়া যায়।


$ users
 amrood bablu qadir
$ who
amrood ttyp0 Oct 8 14:10 (limbo)
bablu ttyp2 Oct 4 09:08 (calliope)
qadir ttyp4 Oct 8 12:09 (dent)
$

 

 

লগআউটের জন্য

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

 

সিস্টেম সাটডাউন

নিচের যেকোনো এক পদ্ধতির কমান্ডে সিস্টেম সাটডাউন করা যায়,

কম্যান্ড বিবরণ
halt তৎক্ষণাৎ সিস্টেমকে বন্ধ করে।
init 0 সাটডাউনের আগে সবকিছু ক্লিন করে সিস্টেম অফ হয়ে যাওয়া
init 6 সাটডাউনের মাধ্যমে রিবুট
poweroff পাওয়ার অফের মাধ্যমে সাট ডাউন
reboot সিস্টেম রিবুট হওয়া
shutdown সিস্টেম সাটডাউন হওয়া

সাটডাউনের জন্য সুপার ইউজার বা রুট হতে হয়, তবে কিছু ব্যতিক্রমও আছে।

 

ইউনিক্স টিউটোরিয়াল (Unix Tutorial)

Huge Sell on Popular Electronics

লেখকঃ সৈয়দআহমেদ অনুবাদঃ মতিউর রহমান।

ইউনিক্স টিউটোরিয়াল

UNIX হচ্ছে উইন্ডোজ সেভেন/এইট এর মত একটি কম্পিউটার অপারেটিং সিস্টেম যা একই সময়ে একাধিক ব্যবহারকারীর কাছ থেকে কার্যক্রম নিয়ন্ত্রণ করতে পারে। এই অপারেটিং সিস্টেমটি প্রায় ১৯৬৯ সালে (AT&T Bell) এটি&টি বেল ল্যাবস এ কেন থম্পসন এবং ডেনিস রিটছি নামক দুই বাক্তির দ্বারা সুচনা ঘটে। সম্মানিত পাঠক এই টিউটোরিয়ালটি নতুনদের জন্য প্রস্তুত করা হয়েছে যেখানে তারা বেসিক থেকে এডভান্স ইউনিক্স কমান্ড,ইউনিক্স শেলস্ক্রিপ্টিং এবং বিভিন্ন ইউটিলিটি ইত্যাদি মৌলিক ধারনা নিতে পারবে। তবে এটা জানার জন্য আপনার কিছু কম্পিউটার অপারেটিং সিস্টেম এবং তার বৈশিষ্ট্য সম্পর্কে সামান্য জ্ঞান থাকতে হবে আমি ধরে নিচ্ছি আপনার সেটা আছে। আপনার বিভিন্ন কম্পিউটার অপারেটিং সিস্টেম এর উপর যে ধারনা আছে সেটা আপনাকে এই টিউটোরিয়াল দেয়া বিভিন্ন এক্সেরসাইজ বুঝতে সাহায্য করবে।

 

ইউনিক্স শেলপ্রোগ্রামসমূহ

আপনি ইউনিক্স/লিনাক্স মৌলিক কমান্ড এবং শেলস্ক্রিপ্ট শিখতে আগ্রহী কিন্তু আপনার পিসিতে সেট আপ দেয়া নেই বা এই প্রোগ্রামটি আপনার কাছে নেই তাহলে চিন্তার কোন বিষয় নেই আপনি চাইলে এখনি compileonline.com এর ডেডিকেটেড সার্ভার থেকে হেল্প নিতে পারেন, যা একেবারেই বিনামূল্যে এবং যে কোন সময় নিতে পারবেন। পরবর্তী টিউটোরিয়াল এর জন্য নেক্সট পেজ ভিসিট করুন। ধন্যবাদ