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

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

 

ইউনিক্সে ফাইল এডিটের জন্য অনেক উপায় আছে যার মধ্যে খুব ভাল একটি হল স্ক্রীনভিত্তিক এডিটর, 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?)

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

 

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

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

 

সেল প্রম্পট

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

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


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

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

 

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

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

 

পিং ইউটিলিটি

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

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

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


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

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

 

ইউনিক্স সিস্টেমে প্রোগ্রাম রান করানোর সময় সিস্টেম প্রোগ্রামের উপযুক্ত পরিবেশ তৈরি করে নেয়। অপারেটিং সিস্টেম 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)

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

 

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

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

নিয়ে আদর্শ আউটপুট দেখালে তাকে 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)

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

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

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

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

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

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

 

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

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

যেমন, 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)

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

 

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

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

 

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

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)

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

 

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

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

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

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


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

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

 

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

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

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

 

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

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


$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