Strawberry Group | Topic Five, Bright Part
T6, Bright Part ( 3 )
EXECUTING COMMANDS USING THE BASH SHELL
- BASIC COMMAND SYNTAX
- EXAMPLES OF SIMPLE COMMANDS
- VIEWING THE CONTENTS OF FILES
- TAB COMPLETION
- CONTINUING A LONG COMMAND ON ANOTHER LINE
- COMMAND HISTORY
- EDITING THE COMMAND LINE
BASIC COMMAND SYNTAX
GNU Bash (Bourne-Again Shell) হলো একটি প্রোগ্রাম যা ব্যবহারকারীর টাইপ করা কমান্ডগুলোর অর্থ বুঝে এবং সেই অনুযায়ী সিস্টেমে কাজ চালায়। একটি সাধারণ Bash কমান্ড তিনটি অংশে বিভক্ত হতে পারে। এর আগে এটি আমরা জানলাম। তারপরেও আমরা নিচে জেনে নিচ্ছি।
command
options
arguments
Command হলো সিস্টেমে ইনস্টল করা বিভিন্ন প্রোগ্রামের নাম। প্রতিটি কমান্ডের নিজস্ব Options এবং Arguments থাকে, যা কমান্ডের কাজ ও আচরণ নিয়ন্ত্রণ করে। Note: প্রতিটি অংশ স্পেস দিয়ে আলাদা করা হয়।
command run by using “Enter Key”
command type করা শেষ হলে “Enter Key” press করতে হবে।
- Example:
[user@host]$ whoami
user
[user@host]$
এখানে whoami হলো কমান্ড, যা ব্যবহারকারীর নাম দেখায়।
semicolon ;
আমারা চাইলে একাধিক কমান্ড এক লাইনে টাইপ করে রান করতে পারি। এজন্য semicolon (;) ব্যবহার করা হয়। Semicolon এক ধরনের metacharacter, যার special meanings থাকে Bash-এ।
- Example
[user@host]$ command1; command2
এখানে command1 এবং command2 উভয়ই একসাথে চালানো হবে।
এই ক্ষেত্রে, উভয় কমান্ডের আউটপুট প্রদর্শিত হবে, তারপর পরবর্তী শেল প্রম্পট (shell prompt) দেখা যাবে।
EXAMPLES OF SIMPLE COMMANDS
date
date কমান্ডটি ব্যবহার করে সিস্টেমের বর্তমান তারিখ ও সময় দেখা যায়।
- সুপারইউজার চাইলে এটি দিয়ে সিস্টেমের ঘড়ি সেটও করতে পারেন।
- যে আর্গুমেন্ট (+) চিহ্ন দিয়ে শুরু হয়, তা
dateকমান্ডের আউটপুট কোন ফরম্যাটে প্রদর্শিত হবে তা নির্ধারণ করে।
- Example:
[user@host ~]$ date
Sat Jan 26 08:13:50 IST 2019
এটি সম্পূর্ণ তারিখ ও সময় দেখায়।
[user@host ~]$ date +%R
08:13
এটি শুধু ঘণ্টা ও মিনিট দেখায় (24 ঘন্টার ফরম্যাটে)।
[user@host ~]$ date +%x
01/26/2019
এটি তারিখ দেখায় (মাস/দিন/বছর)।
passwd
passwd কমান্ড দিয়ে নিজের পাসওয়ার্ড পরিবর্তন করা যায়।
- এটা চালানোর সময় পুরোনো পাসওয়ার্ড দিতে হয়, তারপর নতুন পাসওয়ার্ড সেট করা যায়।
- সাধারণত এই কমান্ডে strong পাসওয়ার্ড দিতে হয়—যেখানে বড় হাতের অক্ষর, ছোট হাতের অক্ষর, সংখ্যা ও বিশেষ চিহ্ন থাকে।
- সুপারইউজার (root) চাইলে অন্য ইউজারের পাসওয়ার্ডও পরিবর্তন করতে পারে।
- Exmple:
[user@host ~]$ passwd
Changing password for user user.
Current password: পুরনো_পাসওয়ার্ড
New password: নতুন_পাসওয়ার্ড
Retype new password: নতুন_পাসওয়ার্ড
passwd: all authentication tokens updated successfully.
file
file কমান্ডটি দিয়ে ফাইলের ধরন (file type) চেনা যায়।
- এই কমান্ড কোনো ফাইল খুলে না, বরং তার ভিতরের শুরু দিকের তথ্য দেখে বলে দেয় এটা কী ধরনের ফাইল।
- Linux-এ .txt, .jpg বা .exe এর মতো ফাইল এক্সটেনশন না দিলেও সমস্যা হয় না, কারণ file কমান্ড নিজেই বুঝে নেয় ফাইলটি কিসের জন্য।
- Example:
[user@host ~]$ file /etc/passwd
/etc/passwd: ASCII text
এটা একটি সাধারণ টেক্সট ফাইল।
[user@host ~]$ file /bin/passwd
/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 ...
এটা একটি প্রোগ্রাম/Executable ফাইল যা 64-বিট সিস্টেমে চলে।
[user@host ~]$ file /home
/home: directory
এটি একটি ডিরেক্টরি (folder)।
VIEWING THE CONTENTS OF FILES
cat
cat কমান্ড দিয়ে আপনি একটি বা একাধিক ফাইল তৈরি করতে পারেন.
cat কমান্ডের ৫টি প্রধান কাজ:
- নতুন ফাইল তৈরি করা
- ফাইলের লেখা দেখান
- একাধিক ফাইলের লেখা একসাথে দেখানো
- একাধিক ফাইল একত্র করে নতুন ফাইল তৈরি করা
- ফাইলের বিষয়বস্তু অন্য ফাইল বা টার্মিনালে পাঠানো (Redirect)
মনে রাখার একটি লাইন:
cat = Create + View + Combine + Redirect File Content
- Example:
[user@host ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
উপরের কমান্ডটি /etc/passwd ফাইলের কনটেন্ট দেখাচ্ছে।
[user@host ~]$ cat file1 file2
Hello World!!
Introduction to Linux commands.
file1 এবং file2-এর কনটেন্ট একসাথে দেখানো হলো।
কিন্তু cat পুরো ফাইল একসাথে দেখায়, একাধিক পেজ হলে স্ক্রল করে কিছু display করতে নাও পারে।
- Extra Example:
1. নতুন ফাইল তৈরি করতে পারেন
cat > file.txt
এরপর যা লিখবেন, তা file.txt-এ সংরক্ষিত হবে। শেষ করতে Ctrl + D চাপুন।
2. ফাইলের ভেতরের লেখা দেখতে পারেন
cat file.txt
এটি file.txt-এর সব লেখা টার্মিনালে দেখাবে।
3. একাধিক ফাইলের বিষয়বস্তু একসাথে দেখতে বা একত্রিত করতে পারেন
cat file1.txt file2.txt
এতে file1.txt এবং file2.txt-এর লেখা ধারাবাহিকভাবে দেখাবে।
4. একাধিক ফাইলের বিষয়বস্তু নতুন একটি ফাইলে সংরক্ষণ করতে পারেন
cat file1.txt file2.txt > all.txt
এখানে all.txt-এ দুইটি ফাইলের সব লেখা একসাথে সংরক্ষিত হবে।
5. ফাইলের বিষয়বস্তু অন্য ফাইলে পাঠাতে (Redirect) পারেন
cat file.txt > copy.txt
এতে file.txt-এর সব লেখা copy.txt-এ চলে যাবে।
less
less কমান্ড Linux-এ বড় ফাইল এক পৃষ্ঠা করে দেখার জন্য ব্যবহার করা হয়। cat-এর মতো পুরো ফাইল একসাথে দেখায় না, তাই বড় ফাইল পড়তে এটি বেশি সুবিধাজনক।
- Up Arrow (↑) → উপরের দিকে যেতে
- Down Arrow (↓) → নিচের দিকে যেতে
- Q চাপুন → close করতে
- Example:
ধরুন students.txt-এ ৫০০ লাইন আছে।less students.txtSpace চাপুন → পরের পৃষ্ঠা।/Rahim লিখে Enter চাপুন → “Rahim” খুঁজে পাবে।n চাপুন → পরবর্তী “Rahim” দেখাবে।q চাপুন → less থেকে বের হয়ে আসবে।
head, tail
- head → ফাইলের শুরুর দিকের ১০ লাইন দেখায়।
- tail → ফাইলের শেষের দিকের ১০ লাইন দেখায়।
- EXAMPLE:
[user@host ~]$ head /etc/passwd
[user@host ~]$ tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:977:977::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
এখানে -n 3 মানে শেষের ৩ লাইন দেখাও।
wc
wc কমান্ড দিয়ে ফাইলে: কতটি লাইন আছে (-l), কতটি শব্দ আছে (-w), কতটি অক্ষর বা বাইট আছে (-c) — তা count করা যায়।
- Example:
[user@host ~]$ wc /etc/passwd
45 102 2480 /etc/passwd
এখানে /etc/passwd ফাইলে রয়েছে:
৪৫টি lines, ১০২টি word, ২৪৮০টি characters.
[user@host ~]$ wc -l /etc/passwd ; wc -l /etc/group
45 /etc/passwd
70 /etc/group
[user@host ~]$ wc -c /etc/group /etc/hosts
966 /etc/group
516 /etc/hosts
1482 total
TAB COMPLETION
কিভাবে কাজ করে Tab Completion?
আপনি যখন শেল প্রম্পটে (যেখানে $ দেখা যায়) কিছু অংশ টাইপ করেছেন, এবং তারপর Tab key press করেন, তখন Bash চেষ্টা করে বাকিটা পূরণ করে দিতে। যদি আপনার টাইপ করা অংশটা একটি নির্দিষ্ট কমান্ড বা ফাইলের সাথে মিলে যায়, তাহলে Tab চাপলেই বাকিটা পূরণ হয়ে যাবে। কিন্তু যদি মিলে যাওয়ার মতো একাধিক কমান্ড/ফাইল থাকে, তাহলে: প্রথমবার Tab press করলে কিছুই হবে না. দ্বিতীয়বার Tab press করলে সব সম্ভাব্য নামের লিস্ট দেখিয়ে দেবে.
Example 1:
Quickly complete commands or file names
[user@host ~]$ pas Tab+Tab
passwd paste pasuspender
Note: Press Tab twice.
আপনি pas পর্যন্ত টাইপ করেছেন। Tab press করলে দেখা যাচ্ছে ৩টি সম্ভাব্য কমান্ড আছে। এখন আপনি আরও কিছু টাইপ করলে Bash বুঝবে কোনটা দরকার।
[user@host ~]$ pass Tab
[user@host ~]$ passwd
Note: Press Tab once.
এখানে pass টাইপ করে একবার Tab চাপলেই পূর্ণ হয়ে গেল passwd।
Example 2:
List all of the files that are matched by the current pattern.
[user@host ~]$ ls /etc/pas Tab
একবার Tab চাপলে /etc/-এর মধ্যে pas দিয়ে শুরু হওয়া নাম যতদূর সম্ভব পূরণ করে দেবে।
[user@host ~]$ ls /etc/passwd Tab
এখানে passwd ফাইলের নাম পুরোপুরি পূরণ হয়ে গেছে।
Note: Press Tab once.
Example 3:
Arguments and options can be matched with tab completion for many commands.
[root@host ~]# useradd -- Tab+Tab
--base-dir --groups --no-log-init --shell
--comment --help --non-unique --skel
--create-home --home-dir --no-user-group --system
--defaults --inactive --password --uid
--expiredate --key --root --user-group
--gid --no-create-home --selinux-user
Note: Press Tab twice. useradd -- টাইপ করার পর দুইবার Tab চাপলে সব উপলব্ধ অপশন দেখায়।
CONTINUING A LONG COMMAND ON ANOTHER LINE
কিভাবে করবেন?
প্রতিটি লাইনের শেষে একটি ব্যাকস্ল্যাশ () দিয়ে দিন।
- এতে Bash বুঝে যাবে — “এই লাইন এখনো শেষ হয়নি, পরের লাইন তারই অংশ”।
- পরবর্তী লাইনে > চিহ্ন দিয়ে শুরু হবে, যেটা বলে দেয় এটি আগের লাইনের চালু অংশ।
Example
long command typing example with backslaash
[user@host]$ head -n 3
> /usr/share/dict/words
> /usr/share/dict/linux.words
- এই কমান্ডে head দিয়ে দুইটি ফাইলের শুরু ৩টি লাইন দেখা হচ্ছে।
প্রথম লাইনে শুধু কমান্ড ও অপশন — head -n 3
পরের দুই লাইনে দুটি ফাইলের নাম, প্রতিটির পরে দিয়ে বোঝানো হয়েছে যে কমান্ড চলমান।
Output
output from example section
==> /usr/share/dict/words <==
1080
10-point
10th
==> /usr/share/dict/linux.words <==
1080
10-point
10th
বড় ও জটিল কমান্ড বুঝতে সুবিধা হয় আপনি ইচ্ছামতো বারবার ভেঙে লিখতে পারেন।
COMMAND HISTORY
history command
history কমান্ডটি ব্যবহৃত হলে আগের চালানো কমান্ডগুলোর একটি তালিকা দেখায়, প্রতিটি কমান্ডের পাশে একটি করে সংখ্যা থাকে।
! চিহ্নের ব্যবহার
- ! (এক্সক্লামেশন মার্ক) হলো একটি মেটা-ক্যারেক্টার, যার মাধ্যমে আপনি আগের কোনো কমান্ড আবার চালাতে পারেন, পুনরায় টাইপ না করেই।
- !number: নির্দিষ্ট সংখ্যার কমান্ডটি আবার চালায়।
- !string: যেই স্ট্রিং দিয়ে আগের কোনো কমান্ড শুরু হয়েছিল, এমন সর্বশেষ কমান্ডটি আবার চালায়।
Example:
[user@host ~]$ history
...output ommitted...
23 clear
24 who
25 pwd
26 ls /etc
27 uptime
28 ls -l
29 date
30 history
!ls চালালে সর্বশেষ ls দিয়ে শুরু হওয়া কমান্ডটি চলবে:
[user@host ~]$ !ls
ls -l
!26 চালালে 26 নম্বর কমান্ডটি আবার চলবে:
[user@host ~]$ !26
ls /etc
Arrow Key ব্যবহারে কমান্ড হিস্টরিতে navigate করা:
↑ (Up Arrow): আগের কমান্ডে যান।
↓ (Down Arrow): পরবর্তী কমান্ডে যান।
← / → (Left/Right Arrow): কার্সরকে বর্তমান কমান্ড লাইনের ভিতরে বামে বা ডানে move করায়।
To add the last word to the command
- Esc + . বা Alt + . প্রেস করলে আগের কমান্ডের শেষ শব্দটি বর্তমান কার্সরের জায়গায় বসে যায়।
- বারবার চাপলে আরও আগের কমান্ডগুলোর শেষ শব্দগুলো ঘুরে ঘুরে আসতে থাকে।
Example:
[user@host ~]$ cp file.txt /home/user/
[user@host ~]$ echo Alt+. চাপলে → /home/user/
Note:
Alt+. খুব সুবিধাজনক কারণ আপনি Alt ধরে রেখে বারবার . চাপলে খুব সহজে আগের কমান্ডগুলোর শেষ শব্দগুলো দেখতে পারেন।
EDITING THE COMMAND LINE
Ctrl +
press from your keyboard
- এর আগে আমরা arrow key দিয়ে কার্সর move ও command history-তে চলাচল করার কথা জেনেছি। এবার নিচে আরও কিছু শর্টকাট key দেওয়া হলো যেগুলো Bash-এর command-line এডিটিং-এ নতুন user-দের জন্য খুবই উপযোগী।
Shortcut Key | Details |
|---|---|
Ctrl + A | কার্সরকে কমান্ড লাইনের শুরুর দিকে নিয়ে যায়। |
Ctrl + E | কার্সরকে কমান্ড লাইনের শেষে নিয়ে যায়। |
Ctrl + U | কার্সর থেকে শুরু পর্যন্ত সব মুছে ফেলে (line-এর শুরু পর্যন্ত)। |
Ctrl + K | কার্সর থেকে লাইন শেষে পর্যন্ত সব মুছে ফেলে। |
Ctrl + Left Arrow Key | আগের শব্দের শুরুর দিকে কার্সর নিয়ে যায়। |
Ctrl + Right Arrow Key | পরবর্তী শব্দের শেষে কার্সর নিয়ে যায়। |
Ctrl + R | আগের চালানো কমান্ডগুলোর মধ্য থেকে সার্চ করার জন্য ব্যবহৃত হয়। টাইপ করার সঙ্গে সঙ্গে মিল থাকা কমান্ড দেখায়। (রিভার্স সার্চ) |
- আরও কমান্ড-লাইন এডিটিং শর্টকাট রয়েছে, তবে এইগুলো নতুনদের জন্য সবচেয়ে দরকারী। বাকি শর্টকাটগুলো দেখতে চাইলে আপনি man bash কমান্ড ব্যবহার করে bash-এর ম্যানুয়াল পৃষ্ঠা খুলতে পারেন:
man bash
Strawberry Group | Topic Five, Bright Part
NEXT, Topic Six >> Managing Files from the Command Line
STRAWBERRY GROUP
- Topic One | Getting Started with Red Hat Enterprise Linux
- Topic Two | Installing Red Hat Enterprise Linux
- Topic Three | Controlling the Boot Process
- Topic Four | Getting Help in Red Hat Enterprise Linux
- Topic Five | Accessing the Command Line
- Topic Six | Managing Files from the Command Line
- Topic Seven | Accessing Linux File Systems
BLUEBEERY GROUP
- Topic Eight | Creating, Viewing, and Editing Text Files
- Topic Nine | Archiving and Transferring Files
- Topic Ten | Managing Local Users and Groups
- Topic Eleven | Controlling Access to Files
- Topic Twelve | Controlling Access to Files with ACLs
- Topic Thirteen | Managing Networking
- Topic Fourteen | Installing and Updating Software Packages
MULBERRY GROUP
- Topic Fifteen | Configuring and Securing SSH
- Topic Sixteen | Managing Basic Storage
- Topic Seventeen | Controlling Services and Daemons
- Topic Eighteen | Scheduling Future Tasks
- Topic Nineteen | Tuning System Performance
- Topic Twenty | Monitoring and Managing Linux Processes
- Topic Twenty One | Analyzing and Storing Logs
GOOSEBERRY GROUP
- Topic Twenty Two | Analyzing Servers and Getting Support
- Topic Twenty Three | Improving Command-line Productivity
- Topic Twenty Four | Managing Logical Volumes
- Topic Twenty Five |Implementing Advanced Storage Features
- Topic Twenty Six | Accessing Network-Attached Storage
- Topic Twenty Seven | Managing SELinux Security
- Topic Twenty Eight | Managing Network Security
- Topic Twenty Nine | Comprehensive Review
- Topic Thirty | Comprehensive Review
- Topic Special Thirty One | Run Containers
