Strawberry Group | Topic Four, Byte Part
T4, Byte Part ( 1 )
READING MANUAL PAGES

INTRODUCING THE MAN COMMAND
man pages
সাধারণত লোকাল সিস্টেমে পাওয়া ডকুমেন্টেশনের একটি গুরুত্বপূর্ণ source হলো System Manual Pages বা man pages.
- এগুলো সংশ্লিষ্ট সফটওয়্যার প্যাকেজের সাথে provide করা হয়, যা কিনা সেই সফটওয়্যার সম্পর্কে ইনফর্মেশন দেয়।
- কমান্ড লাইনে man command ব্যবহার করে সহজেই এই পেজগুলো দেখা যায়।
The historical Linux Programmer’s Manual
যেখান থেকে ম্যান পেজের উৎপত্তি, এটি এত বড় ছিল যে সেটিকে একাধিক মুদ্রিত অংশে (সেকশন) ভাগ করতে হয়েছিল। যেখানে প্রতিটি সেকশনে নির্দিষ্ট একটি বিষয় সম্পর্কে তথ্য থাকে।
Common Sections of the Linux Manual
Section
Indicated by numeric number
1
2
3
4
5
6
7
8
9
বেশি ব্যবহৃত section গুলো color indicate করা হয়েছে
1
user command (executable এবং shell প্রোগ্রাম)
2
সিস্টেম কল (kernel routines, যা user space থেকে ব্যবহার করা হয়)
3
লাইব্রেরি ফাংশন (program library দ্বারা সরবরাহ করা ফাংশন)
4
special files (যেমন device ফাইল)
5
Configuration file format (অনেক configuration ফাইল এবং কাঠামোর জন্য)
6
Games (Historical Linux Games)
7
Conventions, standards, and miscellaneous (protocols, file systems)
8
সিস্টেম অ্যাডমিনিস্ট্রেশন এবং privileged কমান্ড (maintenance কাজ)
9
Linux kernel API (kernel এর internal কল)
(section number)
একই নামের বিভিন্ন বিষয় আলাদা করতে man পেজ রেফারেন্সে টপিকের পরে বন্ধনীর মধ্যে section নম্বর ব্যবহার করা হয়।
উদাহরণস্বরূপ,
- passwd(1) পাসওয়ার্ড পরিবর্তনের কমান্ড বোঝায়।
- অন্যদিকে, passwd(5) /etc/passwd ফাইলের ফরম্যাট বোঝায়, যেখানে লোকাল ইউজার অ্যাকাউন্ট store করা হয়।
# man topic
Specific, man page পড়তে man topic command ব্যবহার করতে হয়।
- man command তথ্য একসাথে পুরোটা না দেখিয়ে একবারে শুধু one screen পরিমাণ তথ্য দেখায়।
- man কমান্ড manual sections গুলো alphanumeric অনুযায়ী খুঁজে।
উদাহরণস্বরূপ,
- man passwd দিলে ডিফল্টভাবে passwd(1) দেখায়।
কিন্তু নির্দিষ্ট সেকশন থেকে man পেজ দেখাতে চাইলে সেকশন নম্বর দিতে হয়।
- যেমনঃ man 5 passwd দিলে passwd(5) দেখায়।

NAVIGATE AND SEARCH MAN PAGES
নিচের টেবিলে man পেজ দেখার সময় ব্যবহৃত কিছু basic নেভিগেশন কমান্ড দেওয়া আছে,
Navigating Man Pages
nevigation command
just simple keyboard instruction
Spacebar
D
U
G
Page down
PageUp
N
Shift+G
DownArrow
UpArrow
Shift+N
/ string
Q
Spacebar
এক স্ক্রিন নিচে স্ক্রল করে
- এটি press করলে এক পুরো স্ক্রিন নিচে চলে যাবে। মানে, বর্তমান স্ক্রিনের নিচের পরের অংশ দেখাবে। বড় man page দ্রুত পড়ার জন্য খুবই useful।
Page down
এক স্ক্রিন নিচে যায়
- এটিও Spacebar-এর মতো কাজ করে। এক স্ক্রিন নিচে স্ক্রল করে।
DownArrow
এক লাইন নিচে যায়
- এক লাইন করে নিচে নামায়। ধীরে ধীরে পড়তে চাইলে ব্যবহার করব।
D
অর্ধেক স্ক্রিন নিচে যায়
- অর্ধেক স্ক্রিন নিচে যায়। Spacebar-এর তুলনায় কম স্ক্রল করে, তাই মাঝামাঝি গতিতে পড়তে সুবিধা।
PageUp
এক স্ক্রিন উপরে যায়
- এক স্ক্রিন উপরে নিয়ে যায়। যদি বেশি নিচে চলে যান, তাহলে আগের অংশ দেখতে কাজে লাগে।
UpArrow
এক লাইন উপরে যায়
- এক লাইন করে উপরে নেয়। কিছু লাইন মিস হলে ফিরে দেখার জন্য ভালো।
U
অর্ধেক স্ক্রিন উপরে যায়
- অর্ধেক স্ক্রিন উপরে যায়। D এর বিপরীত কাজ করে।
N
আগের সার্চ আবার সামনে খোঁজে
- আগের সার্চ করা শব্দটি আবার খুঁজে নিচের দিকে নিয়ে যাবে। মানে next result দেখাবে।
Shift+N
আগের সার্চ পিছনে খোঁজে
- আগের সার্চের বিপরীত দিকে (উপরে) খুঁজবে। মানে previous result দেখাবে।
G
পেজের শুরুতে যায়
- man page-এর একদম শুরুর দিকে নিয়ে যায়। যদি অনেক নিচে চলে যান, শুরুতে ফেরার জন্য useful।
Shift+G
পেজের শেষে যায়
- man page-এর একদম শেষে নিয়ে যায়। শেষ অংশ (যেমন author বা related info) দেখতে কাজে লাগে।
/ string
man পেজে নির্দিষ্ট শব্দ খোঁজে
- কোনো নির্দিষ্ট শব্দ খুঁজতে ব্যবহার হয়। কিভাবে ব্যবহার করব:
- / চাপুন
- যে শব্দ খুঁজবেন লিখুন (যেমন: /file)
- Enter চাপুন
এটি নিচের দিকে প্রথম ম্যাচিং শব্দে নিয়ে যাবে।
Q
man পেজ থেকে বের হয়
- man page থেকে বের হয়ে আবার command prompt-এ ফিরে যায়। এটি সবচেয়ে গুরুত্বপূর্ণ key।
Reading Man Pages
প্রতিটি টপিক কয়েকটি অংশে বিভক্ত থাকে। বেশিরভাগ বিষয়ের heading-গুলো প্রায় একই থাকে এবং একই order-এ present করা হয়। প্রতিটি topic-এর তথ্য এক রকম নয়। তাই সব topic-এ একই ধরনের heading দেওয়া যায় না। যে heading দরকার, শুধু সেটাই ব্যবহার করা হয়। উদাহরণ: একটি man page-এ যদি কোনো configuration file না থাকে, তাহলে সেখানে “Files” heading নাও থাকতে পারে।
Headings
Heading | Description |
|---|---|
NAME | Subject Name. সাধারণত কোনো কমান্ড বা ফাইলের নাম থাকে। সংক্ষিপ্ত বর্ণনা। |
SYNOPSIS | কমান্ড কীভাবে ব্যবহার করতে হয় তার সংক্ষিপ্ত সারাংশ। |
DESCRIPTION | বিষয়টি বোঝার জন্য বিস্তারিত ব্যাখ্যা। |
OPTIONS | কমান্ড execution-র সময় ব্যবহৃত অপশনগুলোর ব্যাখ্যা। |
EXAMPLES | কমান্ড, ফাংশন বা ফাইল ব্যবহারের উদাহরণ। |
FILES | man page সম্পর্কিত ফাইল ও ডিরেক্টরির তালিকা। |
SEE ALSO | Releated Information, অন্য man page এর টপিক। |
BUGS | সফটওয়্যারের পরিচিত সমস্যা বা ত্রুটি। |
AUTHOR | যিনি/যারা এটি তৈরি বা develop করেছেন তাদের তথ্য। |

SEARCHING FOR MAN PAGES BY KEYWORD
man page-এ keyword দিয়ে search করা যায় man -k keyword কমান্ড ব্যবহার করে।
# man -k keyword
specific keyword-এর সাথে মিলে এমন man page-এর তালিকা section নম্বরসহ dispaly করে।
উদাহরণস্বরূপ,
[student@desktopX ~]$ man -k passwd
checkPasswdAccess (3) - query the SELinux policy database in the kernel.
chpasswd (8) - update passwords in batch mode
ckpasswd (8) - nnrpd password authenticator
fgetpwent_r (3) - get passwd file entry reentrantly
getpwent_r (3) - get passwd file entry reentrantly
...
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
passwd (5) - password file
passwd.nntp (5) - Passwords for connecting to remote NNTP servers
passwd2des (3) - RFS password encryption
...
popular system administration topic
- section 1 (user commands),
- section 5 (file formats),
- section 8 (administrative commands)
এছাড়াও Administrator-রা কিছু troubleshooting tool ব্যবহারের সময় section 2 (system calls) ব্যবহার করে থাকেন। rest of the section-গুলো সাধারণত programmer reference বা advanced administration-এর জন্য use হয়।
Note
Keyword search একটি index-এর উপর নির্ভর করে, যা mandb (8) কমান্ড দ্বারা তৈরি করা হয় এবং এটি root user হিসেবে চালাতে হয়। এই কমান্ডটি প্রতিদিন cron.daily এর মাধ্যমে চলে, অথবা যদি আপডেট না থাকে তাহলে system boot হওয়ার এক ঘণ্টার মধ্যে anacrontab দ্বারা চালানো হয়।
Important !
man -K (uppercase) কমান্ডটা শুধু নাম বা description না দেখে পুরো man page-এর ভেতরের সব লেখা খুঁজে দেখে। তাই এটা ধীর কিন্তু বেশি শক্তিশালী।
Note Explanation
1. উপরের লাইন গুলোর মানে কি?
man -k দিয়ে সার্চ করলে সেটা সরাসরি search করে না, একটা আগে থেকে তৈরি করা তালিকা (index) থেকে search করে। এই তালিকাটা তৈরি করে mandb কমান্ড। mandb চালাতে হলে root হতে হয়। এই কাজটা আমাদের নিজে করতে হয় না, কারণ: প্রতিদিন একবার cron.daily স্বয়ংক্রিয়ভাবে এটা চালায় অথবা যদি আপডেট না থাকে, তাহলে কম্পিউটার চালু হওয়ার পর ১ ঘণ্টার মধ্যে (anacrontab) এটা নিজে নিজে চালায়।
2. প্রতিদিন একবার cron.daily স্বয়ংক্রিয়ভাবে এটা চালায়” এর মানে কি?
cron.daily হলো সিস্টেমের একটি automatic কাজ করার ব্যবস্থা (schedule)। প্রতিদিন একবার এটি নিজে নিজে কিছু নির্দিষ্ট কাজ চালায়। তার মধ্যে একটি কাজ হলো mandb চালানো (যাতে man page-এর index আপডেট থাকে)।
3. man page-এর index আপডেট কি অটোমেটিক আসে?
man page-এর index সাধারণত automatic আপডেট হয়।
কিভাবে হয়:
- প্রতিদিন একবার cron.daily নিজে থেকেই mandb চালায়।
- যদি সিস্টেম কিছুদিন বন্ধ থাকে, তাহলে চালু হওয়ার পর anacron কিছু সময়ের মধ্যে এটা চালায়।
- তাই সাধারণ অবস্থায় আমাদেরকে কিছুই করতে হয় না।
4. man page-এর index আপডেট মুলত কে দেয় বা কোথায় থেকে আসে?
man page-এর index আসলে আমাদের সিস্টেমেই তৈরি হয়, বাইরে থেকে আসে না।
তাহলে কিভাবে আসে:
আমাদের Linux-এ অনেক man page file থাকে। যেমন: /usr/share/man/ ফোল্ডারে, mandb কমান্ড এই ফাইলগুলো স্ক্যান করে। তারপর এগুলোর একটা index (তালিকা) বানায়, এই index ব্যবহার করে man -k তা দ্রুত সার্চ করে। কে আপডেট করে? সিস্টেম নিজেই:
cron.daily → প্রতিদিন চালায়
anacron → PC দেরিতে চালু হলে পরে চালায়
5. man page এর ফাইলগুলো কি কাস্টমাইজড করা যায়?
হ্যাঁ, man page file কাস্টম করা যায়, তবে একটু সতর্কভাবে করতে হয়।
কিভাবে কাস্টম করা যায়:
man page আসলে সাধারণ text file (বিশেষ ফরম্যাটে লেখা, যেমন troff/groff)
i. নিজের man page তৈরি করা
আমরা চাইলে নিজের command-এর জন্য নতুন man page বানাতে পারি।
উদাহরণ:
nano mycommand.1
তারপর basic format লিখে save করি এবং রাখি: /usr/local/share/man/man1/ এইভাবে।
ii. existing man page edit করা (সরাসরি)
technically সম্ভব, কিন্তু recommend করা হয় না
কারণ:
- system update হলে overwrite হয়ে যেতে পারে
- ভুল করলে man page নষ্ট হতে পারে
iii. safe way (best practice)
original file না বদলে copy করে edit করি:
cp /usr/share/man/man1/passwd.1.gz /usr/local/share/man/man1/
gunzip passwd.1.gz
nano passwd.1
edit করার পর:
mandb
গুরুত্বপূর্ণ
- root permission লাগতে পারে
- edit করার পর mandb চালাতে হবে
- ভুল format হলে man ঠিকভাবে দেখাবে না
6. man page কাস্টম করলে কি mandb সেটাকে update করবে?
হ্যাঁ, কাস্টম man page করলে mandb সেটাকে index-এ যোগ করে (update করে) – তবে একটা শর্ত আছে।
কখন mandb update করবে:
- যদি আমরা আমাদের custom man page ঠিক লোকেশনে রাখি, যেমন:
- /usr/local/share/man/man1/
- /usr/local/share/man/man5/ (section অনুযায়ী)
তাহলে mandb যখন run হবে:
- ওই ফাইল scan করবে
- index-এ add করবে
- এরপর man -k দিয়ে খুঁজে পাওয়া যাবে
যদি ঠিক জায়গায় না রাখি?
- mandb সেটা detect করবে না
- man -k তে দেখাবে না
manual update: custom file add করার পর চালাও: sudo mandb
Strawberry Group | Topic Four, Byte Part
