Showing posts with label Linux Applications. Show all posts
Showing posts with label Linux Applications. Show all posts

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

লিনাক্সে ডেস্কটপ শেয়ারিং এর জন্য বেশ কয়েকটি পদ্ধতি রয়েছে। এজন্য অনেকেই প্রথমে কোনটি দিয়ে শুরু করবেন তা বুঝতে পারেন না। বিভিন্ন অফিস ও প্রতিষ্ঠানে আইটি সাপোর্ট এর জন্য Real VNC, উইন্ডোজের Remote Desktop ইত্যাদি ব্যবহার করা হয়ে থাকে। দু'ভাবে রিমোট ডেস্কটপ শেয়ারিং করা হয়। একটি হচ্ছে- মেশিনে বর্তমান ইউজার লগইন অবস্থায় যে ডেস্কটপ ব্যবহার করেন সরাসরি সেটিতে একসেস করা আর অপরটি প্রতিটি ব্যবহারকারীর জন্য আলাদা আলাদা ডেস্কটপ সেশন প্রদান করে। ফলে একজন ব্যবহারকারী আরেকজনের ডেস্কটপ দেখতে পায় না। লিনাক্সে দু'ধরনের শেয়ারিং এর জন্য আলাদা আলাদা প্রোগ্রাম রয়েছে।

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

এক. সার্ভার প্রোগ্রাম যেমন- vnc server, x11vnc ইত্যাদি
দুই . ক্লায়েন্ট প্রোগ্রাম যেমন – vnc viewer, tightvnc viewer ইত্যাদি

প্রথম প্রোগ্রামটি যে ডেস্কটপ শেয়ার করা হবে তাতে ইনস্টল করে ব্যাকগ্রাউন্ডে চালু রাখতে হবে।

দ্বিতীয় প্রোগ্রামটি যে মেশিন থেকে রিমোট ডেস্কটপটি দেখতে চান সেখানে ইনস্টল করতে হবে।

এবার আসুন দেখি লিনাক্সে কি কি প্রোগ্রাম রয়েছে ডেস্কটপ শেয়ারিং এর জন্য।

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

আর সরাসরি অন্য মেশিনে লগইন থাকা ব্যবহারকারীর ডেস্কটপ শেয়ারিং এর জন্য প্রয়োজন হবে x11vnc

প্রথমে তাই আমরা x11vnc ব্যবহারের পদ্ধতি দেখবো যাতে অন্যকে রিয়েল টাইমে সাহায্য করা যায়।

x11vnc ইনস্টলের জন্য কমান্ড দিন-

apt-get install x11vnc

ইনস্টল শেষ হওয়ার জন্য টার্মিনালে কমান্ড দিনঃ

x11vnc -many &

উক্ত কমান্ড দিলে x11vnc ব্যাকগ্রাউন্ডে রান করবে এবং অন্য মেশিন থেকে tightvnc viewer দিয়ে বা Real VNC Viewer দিয়ে ডেস্কটপ দেখা যাবে।

vnc viewer ইনস্টলের জন্য কমান্ড দিনঃ
apt-get install xvncviewer or xvnc4viewer

তারপর প্রোগ্রাম মেনু থেকে vnc viewer চালু করুন অথবা শেল প্রম্পটে লিখুন – vncviewer

এবার server: এর সামনে লিখুন যে মেশিনে ঢুকতে চান তার IP Address (192.168.0.1)

উপরের নিয়মে প্রতিবার মেশিন চালুর পর x11vnc -many & কমান্ডটি দিয়ে সার্ভার চালু করতে হবে। যদি মেশিন বুটের সময় x11vnc স্বয়ংক্রিয়ভাবে চালু করতে চান তবে /etc/gdm/Init/Default ফাইলের শেষে (অবশ্যই exit(0) এর আগে) নিচের লাইনটি যোগ করুন ।

কমান্ডঃ
sudo gedit/vi /etc/gdm/Init/Default
/usr/bin/x11vnc -ultrafilexfer -rfbversion 3.7 -bg -reopen -forever

-ultrafilexfer -rfbversion 3.7 – এই দুটি অপশন এনাবল করা হয়েছে যাতে Ultravnc Viewer এর মাধ্যমে ফাইল কপি করা যায় এক মেশিন থেকে অন্য মেশিনে। এ দুটি অপশন বাদ দিতে পারেন যদি ফাইল ট্রান্সফার সুবিধা দরকার না হয়।

etc/gdm/Init/Default ফাইলটি ডিসপ্লে ম্যানেজার (kdm/gdm/xdm/cde) ভেদে পরিবর্তিত হয়। যেমনঃ

GDM (GNOME)     এর ক্ষেত্রে /etc/X11/gdm/Init/Default অথবা /etc/gdm/Init/Default
     KDM (KDE)    এর ক্ষেত্রে /etc/kde*/kdm/Xsetup
     XDM          এর ক্ষেত্রে /etc/X11/xdm/Xsetup (or sometimes xdm/Xsetup_0)
     CDE          এর ক্ষেত্রে /etc/dt/config/Xsetup
x11vnc প্রোগ্রামের পর এবার আমরা VNC Server এর ব্যবহার দেখব। এটি প্রতিটি ব্যবহারকারীকে আলাদা ডেস্কটপ সেশন প্রদান করে থাকে।

vncserver ইনস্টলের জন্য কমান্ড দিনঃ

apt-get install vncserver

প্রথমবার পাসওয়ার্ড সেট করার জন্য রান করুন-
vncpassword
আপনার পাসওয়ার্ড দিন। এটি পাসওয়ার্ডকে ~/.vnc/passwd ফাইলে সেভ করবে।
নতুন সার্ভার চালুর জন্য কমান্ড দিনঃ
vncserver
এর ফলে নতুন সার্ভার চালু হবে এবং এর ডেস্কটপ ১ নম্বর দিয়ে শুরু হবে। যেহেতু একই সময়ে একাধিক vnc সার্ভার থাকতে পারে তাই এ নম্বরটি যথেষ্ট গুরুত্বপূর্ন। যখন আপনি সার্ভারে কানেক্ট করতে চাইবেন তখন এ নম্বরটি জানা থাকতে হবে। ডেস্কটপ নম্বর এরপর বাড়তে থাকবে ১,,.. এরকম । প্রথম সার্ভার চালু করলে সেটি চিহ্নিত হবে machine:1, পরেরটি হবে machine:2 ইত্যাদি।
এবার প্রোগ্রামস মেনু থেকে vnc viewer চালু করে মেশিনের এড্রেস হিসেবে machine:1 দিলে কানেক্ট হতে পারবেন।


নিচের অংশটুকু জেনে রাখার জন্য -
মূল VNC প্রোগ্রামটি একটি ইউনিভার্সিটির ল্যাব প্রজেক্ট ছিল যা পরবর্তীতে কয়েকটি শাখায় বিভক্ত হয়ে যায়।
  • TightVnc – একটি উন্নতমানের কমপ্রেশানযুক্ত সংস্করন
  • TridiaVnc – মূল Vnc এর আরেকটি শাখা
  • RealVNC – এটিই হচ্ছে মূল vnc প্রোগ্রামারের সংস্করন

আজ এ পর্যন্তই। সবাই ভাল থাকুন সে কামনায় শেষ করছি।

ডেবিয়ান লিনাক্সে sudo কনফিগার করা

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

Sudo প্রোগ্রামটি সিস্টেম এ্যাডমিনকে Root ব্যবহারকারীর ক্ষমতা সীমিত আকারে দেয়ার জন্যই ডিজাইন করা হয়েছে। এ প্রোগ্রামের মূল কনসেপ্ট হচ্ছে যত কম ক্ষমতা দেয়া সম্ভব ততটা কম ক্ষমতা প্রদানের মাধ্যমে ব্যবহারকারীকে কাজ সম্পাদনের সুযোগ করে দেয়া।
ডেবিয়ান sudo প্যাকেজ এর পাসওয়ার্ড ১৫ মিনিট পর্যন্ত কর্মক্ষম থাকে। এটার অর্থ হচ্ছে যখন এ কমান্ডের জন্য প্রথমে পাসওয়ার্ড দিবেন তখন পরবর্তী sudo কমান্ড দেয়ার আগে যদি ১৫ মিনিট অতিক্রান্ত না হয় তাহলে আপনাকে আর পাসওয়ার্ড দিতে হবে না। এ পাসওয়ার্ড এর সময়সীমা সাথে সাথেই বাতিল করা যায় নিচের কমান্ডটি দিয়েঃ

sudo -k

ডেবিয়ান এর সুডো নিচের দুটি অপশন সহ কম্পাইল করা হয়ঃ
--with-exempt=sudo
--with-secure-path="/usr/local/sbin:/usr/local/bin:/usr/sbin:


ফলে sudo গ্রুপ এর ব্যবহারকারী ছাড়া অন্য ব্যবহারকারীর পাথটি এখানে ধর্তব্য নয়।

ডেবিয়ানে sudo ইনস্টল করা

# apt-get install sudo

/etc/sudoers ফাইলের মাধ্যমেই সুডোকে কনফিগার করতে হয। এ ফাইলের মাধ্যমেই কারা সুডো ব্যবহার করতে পারবেন তা নিয়ন্ত্রন করা হয়। এটি পরিবর্তনের জন্য কমান্ড দিনঃ

# emacs /etc/sudoers (যদি emacs দিয়ে পরিবর্তন করতে চান)

অথবা vi /etc/sudoers

অথবা gedit /etc/sudoers

এরপর নিচের লাইনটি যোগ করুনঃ

user ALL=(ALL) ALL


(এখানে userএর জায়গায় আপনার ইউজার নেম হবে)

root হিসেবে কোন কমান্ড দেয়ার জন্য টাইপ করুনঃ

sudo command

আরো বেশী কমান্ড দেয়ার জন্য আপনার শেলকে sudo এর সাহায্যে চালু করুনঃ
sudo sh (যদি sh আপনার শেল হয়)

রুট হিসেবে কাজ করার সময় অবশ্যই সতর্ক থাকবেন। যখন কাজ শেষ হবে বের হওয়ার জন্য টাইপ করুনঃ
exit
  • SUDO এর কিছু উদাহরনঃ
# groups

User_Alias ROOT = user1, user2, user3
User_Alias WEBMASTERS = user4, user5, user6

# commands

Cmnd_Alias APACHE = /usr/local/sbin/kickapache
Cmnd_Alias TAIL = /usr/bin/tail
Cmnd_Alias SHUTDOWN = /sbin/shutdown
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg
# privileges

ROOT ALL = (ALL) ALL
WEBMASTERS ALL = PASSWD : APACHE, TAIL
admin ALL = NOPASSWD : /etc/init.d/apache

লিনাক্স এর শক্তিশালী এডিটর -vi শিখুন

  • vi-এর ইতিহাস
vi টেক্সট এডিটরটি আমেরিকার বার্কলেতে অবস্থিত ইউনিভার্সিটি অফ ক্যালিফোর্নিয়াতে তৈরী করা হয়। ১৯৭৬ সালে এটি বিল জয় কর্তৃক তৈরী হয় ed নামক একটি দূর্বল টেক্সট এডিটর এর বিকল্প হিসেবে, এটিকে ৩০০ অথবা ১২০০ বড মডেম এর উপর ব্যবহার যোগ্য করে ডিজাইন করা হয় এবং খুব দ্রুতই এটি একটি শক্তিশালী কিন্তু হালকা টেক্সট এডিটিং প্রোগ্রাম হিসেবে আবির্ভূত হয় যেটিতে প্রত্যেকটি কি স্ট্রোকের সর্বোচ্চ ব্যবহার আদায় সম্ভব।
১৯৯৯ সালে বিল জয় তার এক সাক্ষাৎকারে যে সমস্ত বিষয় তাকে এই vi এডিটর তৈরীতে অনুপ্রানিত করেছিল তা বর্ননা করেন তার নিজের ভাষায়ঃ
… আমরা ed নামে যে এডিটরটি ব্যবহার করছিলাম তা নিয়ে খুবই হতাশ হয়ে পড়েছিলাম। ed সত্যিকার অর্থেই ছিল ব্যর্থ। আমরা এর কোডগুলি জর্জ কুলাউরিস নামে একজন ব্যক্তির কাছ থেকে পেয়েছিলাম … যেটিকে আমরা বলতাম মৃত ব্যক্তিদের জন্য em - Editor - যেহেতু একমাত্র অমরদের পক্ষেই এটিকে দিয়ে সব কাজ করা সম্ভব। সুতরাং আমরা em কে পরিবর্তিত করলাম এবং en তৈরী করলাম। আমি জানিনা পরবর্তীতে এর অন্যকোন ভার্সন যেমন eo অথবা ep বের হয়েছিল কিনা তবে শেষ পর্যন্ত আমরা ex পেয়েছিলাম।(হাসতে হাসতে বললেন) en এর কথা আমি মনে করতে পারি কিন্তু আমি জানিনা কিভাবে এটি ex এ পরিনত হয়েছিল। আমার বাসায় একটি টার্মিনাল ছিল এবং সাথে ছিল একটি ৩০০ বড মডেম যা দিয়ে আমি কার্সরকে মুভ করাতে পারতাম এবং কয়েকমাস দিনরাত প্রানান্ত চেষ্টার পর vi লিখতে সমর্থ হই।
  • vi কেন?
আধুনিক যুগ হওয়া সত্ত্বেও vi আজো গুরুত্বপূর্ন একটি টুলস। গত বিশ বছরে ইউনিক্স/লিনাক্সের যত ডিস্ট্রিবিউশন বের হয়েছে প্রত্যেকের সাথেই ডিফল্টভাবে এটি ইনস্টলড হয়ে থাকে যা থেকে এটির গুরুত্ব কতটুকু তা নিশ্চয়ই অনুমান করা যায়। vi এর অরিজিনাল ভার্সন এর পর এর অনেকগুলি ডেরিভেটিভ বের হয়েছে (যেমনঃ vim, vile এবং elvis) যেগুলির সাথে পরবর্তীতে অনেক ধরনের সুযোগ-সুবিধা যুক্ত হয়েছে। এসব কারনেই vi খুব সম্ভবত পৃথিবীর অন্যতম দ্রুত বিকাশমান এবং স্ট্যাবল একটি টেক্সট এডিটর।
vi এর সাম্প্রতিক ক্লোনগুলির অধিকাংশই যথেষ্ট উন্নত ফিচার সম্পন্ন হওয়ায় আপনি একটি ডকুমেন্ট টাইপ করার সময়ই ডকুমেন্টের টাইপ অনুযায়ী সে টেক্সট গুলিকে ইনডেন্টিং করা বা আপনার প্রোগ্রামিং এর সিনট্যাক্স অনুযায়ী হাইলাইট করার অপশনগুলি স্বয়ংক্রিয়ভাবেই পেয়ে যাবেন যা আপনার কাজকে অনেক সহজ করে দেবে। ইউনিক্স এর প্রথা অনুযায়ী যে সমস্ত ফিচারগুলি অপ্রয়োজনীয় সেগুলি বন্ধ করে রাখতে পারেন আপনার পছন্দ অনুযায়ী এবং সামান্য কয়েক মিনিট সময় ব্যয় করেই আপনি vi কে আপনার পছন্দ অনুযায়ী কাস্টোমাইজ করে ভবিষ্যতের অনেক সময় বাঁচাতে পারেন।
  • কার্যপ্রনালী
বেশীরভাগ টেক্সট এডিটর মাত্র একটি মোডে কাজ করে থাকে এবং মেনু সিস্টেম অথবা একাধিক কি কম্বিনেশন ব্যবহার এর মাধ্যমে আপনাকে ডকুমেন্টে বিভিন্ন ফাংশন প্রয়োগের সুযোগ করে দেয় যেমন উদাহরনস্বরূপ বলা যায় ডকুমেন্ট সেভ করা, সার্চিং করা, কোন টেক্সট রিপ্লেস করা ইত্যাদি। vi এডিটর এর দুটো মোড আছে যথাক্রমে: ইনসার্ট মোড - যে মোডে কোন টেক্সট এডিট করা বা যোগ করা যায় এবং অন্যটি কমান্ড মোড- যেখানে বিভিন্ন এডিটিং ফাংশন এবং ডকুমেন্ট স্থানান্তর এর কমান্ডগুলি দেয়া হয়ে থাকে। এটি শুরুতে কিছুটা অদ্ভুত মনে হলে ও খুব দ্রুতই ব্যবহারের মাধ্যমে এটি আয়ত্বে আনতে পারবেন নিঃসন্দেহে।
কমান্ড মোডে vi তে আপনি টেক্সট পেস্ট করা থেকে শুরু করে একটি শেল চালু করা বা বন্ধ করার মত যেকোন সংখ্যক ফাংশন পরিচালনার নির্দেশ দিতে পারেন। vi তে বেশীরভাগ কমান্ডই খুব সংক্ষিপ্ত এবং একটি অক্ষর চেপেই তা দেয়া সম্ভব। এমনকি ইনসার্ট মোড এ প্রবেশ করতে হয় কমান্ড মোড থেকেই। ইনসার্ট মোডে আপনি শুধুমাত্র লিখতে পারবেন। ব্যতিক্রম বলতে শুধুমাত্র নতুন লেখা ব্যাকস্পেস-কি দিয়ে মুছে সংশোধন করতে পারবেন -ব্যস এটুকুই। ইনসার্ট মোডে লেখা কপি পেস্ট করতে পারবেন না, সার্চ করতে পারবেন না বা ডকুমেন্ট কে সংরক্ষন/সেভ করতে পারবেন না। সব কিছুই কমান্ড মোড এ করতে হবে।
এ দু’মোডই আপনাকে ব্যাপকভাবে ব্যবহার করতে হবে vi তে এবং একবার অভ্যস্ত হয়ে গেলে দেখবেন আপনার বর্তমান ব্যবহৃত এডিটর (নোটপ্যাড, ওয়ার্ড বা অন্য যেকোন এডিটর) থেকেও আপনি কত দ্রুতগতিতে vi এর মাধ্যমে ডকুমেন্ট নিয়ে কাজ করতে পারছেন।
  • মোড এর ব্যবহার এবং লেখালেখি করা
অনেক আলোচনা তো হল। এবার ব্যবহারিক নিয়ে শুরু করা যাক- কি বলেন?
যখন আপনি প্রথম vi চালু করবেন (যেকোন শেল ওপেন করে vi টাইপ করে এন্টার কি চাপুন), আপনি নিচের মত একটি স্ক্রিন পাবেনঃ
~
~
~
~
~
~
প্রতিটি টাইলড(~) এর প্রতীক একটি লাইনকে নির্দেশ করে যেখানে কোন কিছু লেখা নাই । টাইলড কি দিয়ে একটি ফাঁকা লাইন এবং একটি লাইন যার অভ্যন্তরে কোন কিছু নাই - তার মধ্যে পার্থক্যকে নির্দেশ করে অর্থাৎ আপনি যখন এন্টার কি প্রেস করেন তখন একটি নতুন লাইন সৃষ্টি হয় যেটি দেখতে ফাকা মনে হলেও সেখানে একটি নতুন লাইন ক্যারেক্টার থাকে যা একটি নতুন লাইনকে নির্দেশ করে। vi প্রথমে চালু হলে আপনি একে কমান্ড মোডে পাবেন। এখানে একটু মনে রাখতে হবে যে, vi তে কমান্ডগুলি কিন্তু কেস সেনসিটিভ অর্থাৎ বড় হাতের এবং ছোট হাতের অক্ষরকে সে আলাদাভাবে বিবেচনা করে থাকে - উদাহরনস্বরূপ ছোট হাতের i এবং বড় হাতের I কখনই এক রকম কমান্ড এর নির্দেশ হবে না।
নতুন কিছু লিখতে প্রথমেই i চাপুন তাহলে আপনি ইনসার্ট মোডে প্রবেশ করবেন। আপনি এখন থেকে যা টাইপ করবেন তা ডকুমেন্টে নতুন লেখা হিসেবে টাইপ হতে থাকবে। এখন কিছু শব্দ লিখতে থাকুন এবং ব্যাকস্পেস কি চেপে কিছু লেখা মুছে আবার নতুন কিছু লিখুন।
এস্কেপ(Esc) কি চাপ দিলে আপনি ইনসার্ট মোড থেকে বেরিয়ে পূনরায় কমান্ড মোডে প্রবেশ করতে পারবেন। কয়েকবার মোড পরিবর্তন করুন আর কিছুটা অভ্যস্ত হওয়া পর্যন্ত একই কাজ করতে থাকুন। এখন vi থেকে বের হওয়ার জন্য আপনি কমান্ড মোডে সুইচ করুন প্রথমে তারপর টাইপ করুন :q (colon q) এবং enter কি চাপুন। সম্ভবত আপনার প্রত্যাশানুযায়ী এটি বের না হয়ে একটি বার্তা প্রদর্শন করবে যেখানে একটি সতর্কতাস্বরূপ সে জানতে চাইবে আপনি ডকুমেন্ট সংরক্ষন করতে চান কি না? যেহেতু আমরা ডকুমেন্টটি সংরক্ষন করবো না তাই আমরা vi কে একটি কমান্ড দিব যাতে সে এই বার্তা প্রদশন না করে। তাই টাইপ করুন :q! (colon q exclamation mark) এবং enter চাপুন। এখন vi এডিটর থেকে বের হয়ে আপনি পূনরায় শেল এ যেতে পারবেন।
  • ডকুমেন্টে স্থানান্তর করার পদ্ধতি
যারা মাউস দিয়ে ডকুমেন্টে স্থানান্তর করতে অভ্যস্ত তারা প্রথমেই একটু কঠিন মনে করতে পারেন vi এডিটর এ স্থানান্তর করাকে কিন্তু vi এর কি বোর্ড কমান্ড একবার শিখে গেলে দেখতে পাবেন যে এটি মাউস থেকে ও কত সহজ। এ পদ্ধতি গুলি জানতে প্রথমেই আপনি আগে থেকে কিছু টেক্সট আছে এমন একটি ডকুমেন্ট চালু করুন অথবা নতুন একটি ডকুমেন্ট তৈরী করে কিছু লিখুন যাতে এটিতে স্থানান্তর করার কমান্ড সমূহ দেয়া যায়। আগের কোন ডকুমেন্ট ওপেন করার জন্য কমান্ড দিন vi অথবা কমান্ড দিন vi এবং ইনসার্ট মোড এ প্রবেশ করে কয়েক লাইন লিখুনঃ
vi তে স্থানান্তর করার কমান্ডগুলি নিম্নরূপঃ
• h - বামে
• j - নিচে
• k - উপরে
• l - ডানে
কি সহজ মনে হচ্ছে না? যদি ও আধুনিক vi এর সংস্করনগুলিতে এ্যারো কি ব্যবহার করে করে মুভ করা যায় কিন্তু উপরের কি-গুলি ব্যবহারের মাধ্যমে আপনি সব ভার্সনের vi তেই সঠিকভাবে কাজ করতে পারবেন। তাই এটি শিখে রাখা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনাকে কোন একটি বিশেষ ভার্সন এর vi উপর নির্ভর না করতে হয়। এটি শেখার আরেকটি সুবিধা হচ্ছে যে আপনি কি-বোর্ডের কেন্দ্র থেকেই স্থানান্তর করতে পারছেন ফলে টাইপিং স্পিড অনেকগুন বেড়ে যাবে। তাই চেষ্টা চালিয়ে যান।
vi এ স্থানান্তর করার জন্য সার্চ ফাংশনগুলির গুরুত্ব অনেক। কমান্ড মোডে থাকা অবস্থায় টাইপ করুন / (একটি অগ্রবর্তী স্ল্যাশ, তারপর যে শব্দ বা অক্ষর আপনি খুজতে চান) তারপর enter দিন এবং আপনার স্থান থেকে সরাসরি প্রথম মিল পাওয়া স্থানে নিয়ে যাবে। পূনরায় একই সার্চ করতে চাইলে টাইপ করুন / এবং enter চাপুন। পিছন দিকে খোজার অপশনটিও সহজ। শুধুমাত্র টাইপ করুন / এর পরিবর্তে ? । লক্ষ্য রাখবেন যে, সকল কমান্ডই কেস সেনসিটিভ; যদি আপনি এ অপশনটি বন্ধ করতে চান তবে সার্চের আগে কমান্ড দিন :set ic
সার্চ এর ব্যবহার করার সময় মনে রাখতে হবে যে কিছু বিশেষ অক্ষর vi তে বিশেষ অর্থ বহন করে। উদাহরনস্বরূপ ফুল স্টপ অক্ষরটি (.) বলতে যেকোন অক্ষর ম্যাচ করাকে বোঝায়। অর্থাৎ আপনি যখন সার্চ করবেন /192.168, তখন 192.168.1.125 শব্দটি ও খুজে পাবে, কিন্তু সে একইসাথে 1920168 শব্দটি ও খুজে পাবে। আপনি এ সমস্ত বিশেষ অক্ষরের আগে একটি স্ল্যাশ ব্যবহার করে এ সমস্যার সমাধান করতে পারেন । আগের উদাহরনে আপনি যদি প্রথম প্যাটার্নটি খুজে পেতে চান দ্বিতীয়টির বদলে তাহলে টাইপ করুন /192\.168।
  • লেখা সংশোধন করা
পূনরায় একটু স্মরন করা যাক - vi যখন চালু হয় তখন আমরা কমান্ড মোডে থাকি। এখান থেকে i চেপে আপনি ইনসার্ট মোডে প্রবেশ করতে পারেন এবং বিষয়বস্তুর অভ্যন্তরে টাইপ করতে পারেন। কিন্তু আর কি কোন পদ্ধতি আছে ইনসার্ট মোডে প্রবেশ করার জন্য এবং যা লিখেছেন তা সংশোধন কিভাবে করবেন? কমান্ড মোড থেকে ইনসার্ট মোডে যাওয়ার জন্য অনেক অপশন রয়েছে।
আমরা ইতিমধ্যেই জেনেছি যে, i টাইপ করলে আমাদেরকে ইনসার্ট মোডে কার্সর অবস্থানে নিয়ে যায়। এছাড়া আরো কয়েকটি উপায় রয়েছে ইনসার্ট মোডে যাওয়ার। উদাহরনস্বরূপ, যদি I টাইপ করেন, আপনি ইনসার্ট মোডে প্রবেশ করে বর্তমান লাইনের একদম শুরুতে যেতে পারবেন। a টাইপ করে আপনি বর্তমান কার্সরের ডান দিক লেখা থেকে শুরু করতে পারেন এবং A টাইপ করে বর্তমান লাইনের একদম শেষ থেকে শুরু করতে পারবেন। কার্সরের নিচে একটি ফাকা লাইন তৈরী করে লেখার জন্য o টাইপ করুন এবং উপরে তৈরীর জন্য O চাপুন।
একটি একটি করে অক্ষর মুছতে হলে কার্সরটাকে টেক্সট এর সামনে নিয়ে আসুন আর চাপতে থাকুন x। আর ব্যাকস্পেস এর মত অন্যদিক থেকে মুছতে চাপুন X। ব্যস মোছামুছি শিখে গেলেন-তাই না? পুরো লাইন মুছতে চান? তাহলে টাইপ করুন dd। আর একটি শব্দ মুছতে চাপুন dw তাহলে পরের শব্দটি গায়েব হয়ে যাবে। বর্তমান কার্সর অবস্থান থেকে লাইনের শেষ মাথা পর্যন্ত মুছতে হলে D কমান্ড ব্যবহার করুন।
খুব বেশী মোছা হয়ে গেল কি? কোন সমস্যা নাই। আগের লেখা ফিরে পেতে চাপুন u এবং পুরো লাইন ফেরত পেতে U। vi এর কিছু ক্লোন মাল্টিলেভেল আনডু সাপোর্ট করে তাই একের অধিকবার u চাপলে আপনাকে এটি ডকুমেন্ট এ যত আগের অবস্থানে ছিলেন সেখানে নিয়ে যেতে থাকবে। এই আনডু কমান্ডটি ভালোভাবে শিখে নিন কারন তা প্রায়ই আপনার কাজে লাগবে।
  • কপি এবং পেস্ট করা
vi এডিটর এ কপি এবং পেস্ট করার দারুন সুবিধা আছে।
নিশ্চয়ই অনুমান করতে কষ্ট হচ্ছে না যে, এজন্য কয়েকটি কমান্ড শিখতে হবে। yw টাইপ করলে একটি শব্দ কপি হবে, yy একটি লাইন কপি করবে, এবং y বর্তমান কার্সর থেকে আপনার টার্গেট motion পর্যন্ত কপি করবে। উদাহরনস্বরূপঃ আপনি কার্সর থেকে ডকুমেন্ট এর প্রায় নিচে অবস্থিত একটি অক্ষর blue পর্যন্ত কপি করার জন্য টাইপ করুন y/blue এবং enter চাপুন। এটি আসলে সার্চ এর স্থানান্তর পদ্ধতি ব্যবহার করেই কপি করে থাকে। আপনি স্থানান্তর করার যেকোন কমান্ড এখানে ব্যবহার করতে পারেন।
কপি করা টেক্সট পেস্ট করাটা মোটেও কঠিন নয়- p চাপুন কার্সর এর আগে পেস্ট করতে চাইলে আর P চাপুন কার্সর এর পরে পেস্ট করতে চাইলে।
বাফার এর ব্যবহার সাধারন কপি এবং পেস্ট করা থেকে খুব একটা ভিন্ন নয়- একটি নির্দিষ্ট বাফারে কোন টেক্সট কপি করার জন্য টাইপ করুন- "x যেখানে x হচ্ছে বাফার এর নাম (a-z), এবং action হচ্ছে কপি করার কোন কমান্ড, যেমন yy। নির্দিষ্ট বাফার থেকে পেস্ট করতে চাইলে টাইপ করুন "xp অথবা "xP, যেখানে x হচ্ছে বাফারের নাম। কিছুক্ষন প্র্যাকটিস করলে আপনি ঘুমের মধ্যে ও কপি পেস্ট করতে পারবেন এটা নিশ্চিত।
  • ফাইল সংরক্ষন করা
এখন পর্যন্ত আপনি কিভাবে ডকুমেন্ট খুলতে হয়, কিভাবে লিখতে হয়, সংশোধন করতে হয়, স্থানান্তর করতে হয় তা শিখেছেন - তাই কিভাবে ডকুমেন্ট কে সংরক্ষন করবেন তা শেখার সব থেকে ভাল সময় এখন ।
যদি আপনি vi চালু করে থাকেন একটি ফাইলনেমকে প্যারামিটার হিসেবে দিয়ে (যেমনঃ vi )তবে শুধুমাত্র :w টাইপ করলেই আপনার ডকুমেন্টটিকে filename এর নাম হিসেবেই সংরক্ষন করবে। যদি অন্য কোন সমস্যা যেমন পারমিশন বা রিড অনলি সমস্যা দেখা দেয় তবে আপনার যদি সঠিক পারমিশন থাকে আপনি এটিকে ওভাররাইড করার জন্য কমান্ড দিতে পারেনঃ:w!
যদি ডকুমেন্টের নতুন একটি কপি সংরক্ষন করতে চান (ধরি, ব্যাকআপ হিসেবে) অথবা যদি vi চালু করে থাকেন ফাইলনেম প্যারামিটার না দিয়ে তবে নতুন একটি নামসহ সংরক্ষন এর জন্য কমান্ড দিনঃ:w । এছাড়া আরো একটি চমৎকার অপশন % টাইপ করে (যেটি বর্তমান ফাইল এর নামকে বোঝায়) একই কমান্ড দেয়া যায়। উদাহরনস্বরূপ, typing :w %.bak টাইপ করলে বর্তমান ফাইলটিকে একই নামে .bak এক্সটেনশনসহ সংরক্ষন করবে।
একটি মাত্র কমান্ডের সাহায্যে vi থেকে বের হওয়ার জন্য টাইপ করুন:x অথবা :wq; দুটি কমান্ড এর কাজ মূলত একই। আপনি ZZ (কোলন ছাড়া) ব্যবহার করে ও ডকুমেন্ট সংরক্ষন করা ও বের হওযার কাজ করতে পারেন। আগের মত এখানে ও কমান্ড এর শেষে আপনি একটি বিস্ময়চিহ্ন ব্যবহার করে কোন বার্তা প্রদর্শন করা থেকে vi কে বিরত রাখতে পারেন।
  • স্থানান্তরের আরো কয়েকটি কমান্ড
হয়ত খেয়াল করে থাকবেন vi তে কোন কাজ করার জন্য একের অধিক কমান্ড আছে। স্থানান্তর করা ও এক্ষেত্রে ব্যতিক্রম নয় এবং এখানে আরও চমৎকার কিছু পদ্ধতির ব্যবহার আমরা দেখব।
বড়সড় ফাইল প্রায়ই এডিটের প্রয়োজন হয়ে থাকে। তাই যদি লাইন বাই লাইন আপনি স্ক্রলিং করতে থাকেন তাহলে সেটি খুব একটি সুবিধার কাজ হবে না নিশ্চয়ই। এজন্য এক স্ক্রিন পরিমান সামনের দিকে স্থানান্তরের জন্য চাপুন ctrl-F এবং এক স্ক্রিন পিছনে যাওয়ার জন্য চাপুন ctrl-B। সামনের দিকে অর্ধেক পরিমান পেজ স্ক্রল করার জন্য চাপুন ctrl-D, অথবা পিছনে যাওয়ার জন্য ctrl-U । স্ক্রিন এর উপরে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-Y এবং নিচে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-E.
মাঝে মাঝে কার্সর এর উপর ভিত্তি করে পেজ এ স্থানান্তর করা বেশ সুবিধাজনক। z চাপার পর enter চাপলে বর্তমান কার্সর এর অবস্থানকে পেজ এর উপর স্থানান্তর করবে। z. পেজকে মধ্যভাগে নিয়ে যাবে এবং z- নিচের দিকে নিয়ে যাবে। এ কমান্ডগুলি কিছুটা ঝামেলপূর্ন হলে ও মনোযোগ দিয়ে শিখে রাখুন।
প্রোগ্রামিং করার এর সময় আরো একটি গুরুত্বপূর্ন কমান্ড কাজে লাগে আর সেটি হচ্ছে একটি নির্দিষ্ট লাইন নম্বরে স্থানান্তর করা। আপনি এটি: (কোলন এর পর লাইন নম্বর দিন) কমান্ড দিয়ে করতে পারেন এবং enter চাপুন। উদাহরনস্বরূপ যদি :32 টাইপ করেন তাহলে আপনার ফাইলের ৩২ নম্বর লাইন যেতে পারবেন।
  • অনুসন্ধান এবং বদল করা
আমি কি আপনাকে ইনসার্ট মোডের আর একটি বিশেষ অবস্থা ওভারটাইপ মোড দেখিয়েছি যেটা R টাইপ করে দেয়া হয়ে থাকে অথবা একটি অক্ষর বদলে দেয়ার জন্য শুধুমাত্র r কমান্ড করেই কাজ করা যায় সেটি? যাই হোক এখন তো জানলেন। কিন্তু এখন একটি অন্য বিষয নিয়ে আপনাকে বলতে চাই।
vi তে অনুসন্ধান এবং বদল করার কাজটি মূলত রেগুলার এক্সপ্রেশন ব্যবহার করেই করা হয়ে থাকে এবং এটি দিয়ে অনেক জটিল কাজ সম্পাদন করা সম্ভব। যেমন প্রথম সাতটি potato শব্দের জন্য দ্বিতীয় o টিকে পরিবর্তন করা অথবা দুটি p সম্বলিত যেকোন শব্দকে parrot শব্দ দিয়ে রূপান্তর করা ইত্যাদি। যেকোন সার্চ অপশনের মত এখানে ও সকল কিছুই কেস সেনসিটিভ। এটি বন্ধের জন্য কমান্ড দিন :set ic যাতে কেস সেনসিটিভিটি সংক্রান্ত সমস্যা এড়াতে পারেন।
সাধারন অনুসন্ধান এবং বদল করার কমান্ডগুলি খুবই সহজ; টাইপ করুন :s/foo/bar এর ফলে বর্তমান লাইনে foo শব্দটির বদলে bar শব্দটি দিয়ে বদল করতে পারবেন। ডকুমেন্টের কতটুকু অংশে এ পরিবর্তন করতে হবে তা নির্দিষ্ট করে দেয়া যায় - যেমন :1,4s/foo/bar টি দিলে ১-৪ নম্বর লাইনে যতগুলি পরিবর্তন করা সম্ভব তা করবে। সমস্ত ডকুমেন্টে পরিবর্তন করতে চাইলে টাইপ করুন:%s/chicken/dog যেখানে chicken এর বদলে সব জায়গাতে dog লেখা হয়ে যাবে, একই কমান্ড আরেকটু অন্যভাবে দিতে পারেন :1,$s/chicken/dog, যেখানে $ এর অর্থ একবারে শেষ লাইন পর্যন্ত।
যদি খুব বেশী পরিবর্তন এর আশঙ্কা করেন তবে প্রতিবার বদল করার সময় একটি বার্তা প্রদর্শনের অপশন দিতে পারেন। এজন্য অনুসন্ধান কমান্ড এর একদম শেষে /c অতিরিক্ত যোগ করুন যেমন :%s/abuot/about/c। /p অপশন ব্যবহার করে যতগুলি পরিবর্তন করা হবে সবগুলি একটি বার্তা এর মাধ্যমে দেখানোর কমান্ড দেয়া যায়।
  • শেষকথা
এ টিউটোরিয়ালে vi এডিটর এর শক্তিশালী দিকটি ফুটিয়ে তোলার চেষ্টা করেছি যাতে আপনি দৈনন্দিন জীবনে এটি থেকে সর্বোচ্চ সুবিধা আদায় করে নিতে পারেন। একটু ধৈর্য্য ও পরিশ্রম করে শিখে নিলে আশা করি এতে কাজ করে আনন্দ পাবেন। এটি আপনার আগামী দিনের একটি সম্ভাবনা উম্মোচনে সাহায্য করুক সেই প্রত্যাশায় শেষ করছি।