কম্পিউটার টিউটোরিয়াল

কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

লিনাক্সে bash শেল ব্যবহার করে খুশি? অথবা আপনি একটি বিকল্প ট্রাই করতে চান? tsch, fish, KornShell, এবং Z Shell থেকে বেছে নেওয়া যাবে। কিন্তু এই জনপ্রিয় লিনাক্স শেলগুলোতে কোনটি সেরা?

লিনাক্স শেল (Shell) কী?

সাধারণত, আপনি যখন একটি অ্যাপ্লিকেশন লিখেন, এটি একটি হাই-লেভেল ল্যাঙ্গুয়েজে করা হয় যা মানুষ বুঝতে পারে। উদাহরণ:C#, Java, C++, ইত্যাদি। বিশ্বাস করুন বা না করুন, আপনার কম্পিউটার সব কিছু ১ এবং ০ হিসেবে দেখে, বা সাধারণত যেনে যাওয়া বাইনারি (binary) বা মেশিন কোড (machine code)।

একটি কম্পাইলার (compiler) হাই-লেভেল ল্যাঙ্গুয়েজকে একটি বাইনারি ফাইলে ট্রান্সলেট করবে যেমন একটি এক্সিকিউটেবল (executable)। এই বাইনারি ফাইলটিই আপনি এক্সিকিউট করেন সে অ্যাপ্লিকেশন চালু করার জন্য।

এটি একটি ভেরি হাই-লেভেল ভিউ (very high-level view) যা কী ঘটে; শুধু মনে রাখুন, আপনার কম্পিউটারকে একটি ট্রান্সলেশন লেয়ার (translation layer) দরকার। এটি আপনি যা বলে বলছেন এবং এটি কীভাবে বুঝতে পারে তার মাঝপথে বসে।

একটি শেল (shell) যেনে যাওয়া হয় একটি ইন্টারপ্রিটার (interpreter) হিসেবে। কম্পাইলারের মতো, একটি ইন্টারপ্রিটার মানব কোডকে মেশিন কোডে ট্রান্সলেট করে। পার্থক্যগুলোর একটি হলো ইন্টারপ্রিটার এটি একবারে এক স্টেটমেন্ট (statement) করে। একই সাথে, একটি কম্পাইলার পুরো প্রোগ্রাম স্ক্যান করে এবং সেটাকে মেশিন কোডে ট্রান্সলেট করে।

শেল (shell), আপনার অপারেটিং সিস্টেম (OS)-এর সাথে ইন্টারঅ্যাক্ট করার একটি ইন্টারফেস। আপনি শেলে কমান্ড টাইপ করলে, সেটি সেই কমান্ডগুলো ইন্টারপ্রেট করার এবং ম্যাজিক ঘটানোর দায়িত্বে থাকে। ফাইল কপি করা, পাইপিং (piping), ফাইল লিস্ট করা—এসব সব শেলের कार्यক্ষেত্রে (remit) পড়ে।

বেশ কিছু লিনাক্স শেল উপলব্ধ। আপনার সিস্টেমে কোন কোন শেল উপলব্ধ সেটা জানতে, টার্মিন্যাল খুলুন এবং টাইপ করুন:

cat /etc/shells

আপনি বর্তমানে কোন শেল ব্যবহার করছেন তা জানতে টাইপ করুন:

echo $0
কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

কিন্তু আপনি কি সেরা লিনাক্স শেল ব্যবহার করছেন? আসুন দেখি কী কী উপলব্ধ।

১. Bash

এটি লিনাক্স ব্যবহারকারীদের মাঝে দূর দূরতে সবচেয়ে জনপ্রিয় শেল। Bourne-Again Shell (bash)-কে চিন্তা করা কঠিন, ইকুয়েশনের একটি অংশ না হলে। অনেক লিনাক্স ডিস্ট্রিবিউশন bash-কে ডিফল্ট শেল হিসেবে শিপ করে কারণ bash হলো ডিফল্ট GNU শেল। ১৯৮৯ সালে রিলিজড, এটিও কয়েক দশক সুস্বাস্থ্যকর ডেভেলপমেন্টের পেছনে আছে।

Bash-এর প্রিডিসেসর (predecessor) হলো The Bourne Shell (sh) যা মূল Unix শেলগুলোর একটি। sh প্রোগ্রামারদের জন্য একটি আকর্ষণীয় ফিচার ছিল যে তারা তাদের স্ক্রিপ্টগুলো সরাসরি bash-এ পোর্ট (port) করতে পারতেন সম্পূর্ণরূপে অপরিবর্তিত। Bash তার প্রিডিসেসরের চেয়ে বেশ কিছু এনহ্যান্সমেন্ট (enhancement) অফার করে:

  • কমান্ড কমপ্লিশন (Command completion)
  • কমান্ড হিস্ট্রি (Command history)

অনলাইন ডকুমেন্টেশন প্রায়শই অনুমান করে যে আপনি bash ব্যবহার করছেন। তবে এটি তার কমींগুলো ছাড়া নয়—যে কেউ bash স্ক্রিপ্ট লিখেছে সে এটিকে সাক্ষ্য দিতে পারবে! আপনি কিছু করতে পারবেন না সেটা নয়, সেটা হচ্ছে এটি পড়া ও লেখা সবসময় বিশেষভাবে elegante (সুন্দর/সফাইস্ট্রিকেটেড) নয়।

২. KornShell

কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

সাধারণত ksh নামে পরিচিত, KornShell একটি জনপ্রিয় অ্যাল্টারনেটিভ লিনাক্স শেল যা ১৯৮০-এর দশকে Bell Labs-এ উদ্ভূত। bash এবং ksh-এর মাঝে অনেক পার্থক্য নেই, কিন্তু প্রতিটোর কিছু মাইনর অ্যাডভান্টেজ রয়েছে। Ksh-তে, উদাহরণস্বরূপ, cd old new কমান্ড রয়েছে। আপনি যদি /Downloads/foo/bar/one/foobar ডিরেক্টরিতে থাকেন এবং আপনাকে /Downloads/foo/bar/two/foobar-এ যেতে হয়, আপনাকে শুধু লিখতে হবে:

cd one two

ksh-এর ভেরানরা (veterans) এর স্ক্রিপ্টিং সুবিধা বলেই এর সुपেরিয়োরিটি (superiority) ادভোকেট (advocate) করবে। এগুলোতে রয়েছে:

  • ভালো লুপ সিনট্যাক্স (Better loop syntax)
  • কমান্ড রিপিট করার স্বাভাবিক উপায় (Natural ways to repeat commands)
  • অ্যাসোসिएটিভ অ্যারে (Associative arrays)

bash-এর বিপরীতে, ksh-র জন্য অনলাইন হেল্প খুঁজে পাওয়া কঠিন। আপনি যদি ksh ট্রাই করতে চান, লিখুন:

sudo apt install ksh
ksh

৩. Tcsh

কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

Tcsh আপনার রুট ট্রেস করতে পারে Unix-এর প্রাথমিক দিনগুলোতে। এটি C shell (csh)-এর একটি উন্নত ভার্সন এবং এর ফিচারগুলো হলো:

  • প্রোগ্রামেবল কমান্ড-লাইন কমপ্লিশন (Programmable command-line completion)
  • কমান্ড-লাইন এডিটিং (Command-line editing)
  • অ্যালিয়াসে আর্গুমেন্ট যোগ করা (Adding arguments to aliases)
  • কমান্ড হিস্ট্রি সহজে অ্যাক্সেস (Easy command history access)

আপনি যেকোনো কমান্ড রান করতে পারেন !n টাইপ করে, n কে ডিসপ্লেড হিস্ট্রিতে এর করেসপন্ডিং নাম্বার দিয়ে রিপ্লেস করে। Tcsh-এ হিস্ট্রি ট্যাব কমপ্লিশন কাজ করে টাইপ করে:

!a<TAB>

এটি এক্সপ্যান্ড (expand) হবে শেষ কমান্ডে যা "a" লেটার দিয়ে শুরু হয়েছিল। তুলনামূলকভাবে, bash-এ আপনাকে !a:p টাইপ করতে হবে কমান্ডটি প্রথমে দেখতে, তারপর !! চাপতে হবে এক্সিকিউট করার জন্য।

tcsh ট্রাই করতে চাইলে, টাইপ করুন:

sudo apt install tcsh
tcsh

Tcsh BSD-ভিত্তিক সিস্টেম যেমন FreeBSD-এর জন্য ডিফল্ট শেল। tcsh-এর বড় সেলিং পয়েন্ট (selling point) এর স্ক্রিপ্টিং ল্যাঙ্গুয়েজ, যেটি কার্যকর যারা প্রাথমিকভাবে C-এ প্রোগ্রামিং করেন। এটি tcsh-কে ছোট C প্রোগ্রাম প্রোটোটাইপ (prototyping) করার জন্য উপযোগী করে তোলে যেন আপনি ব্র্যাকেট (brackets) কী ব্যবহার করছেন সেটা নিয়ে বিভ্রান্ত না হন। এই সমস্যাটি ঘটে যদি আপনি C প্রোগ্রামিং এবং শেল স্ক্রিপ্টিং-এর মাঝপথে folyam স্যুইচ করেন।

৪. Fish

কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

লিনাক্সের সকল সিরিয়াসনেস (seriousness)-এর মাঝপথে, fish টিম তাদের প্রজেক্টে একটি হিউমর সেন্স (sense of humor) এমবেড (embed) করেছে। তাদের ওয়েবসাইটে, টাং-ইন-চিক (tongue-in-cheek) টাইটেল পড়ে "Finally, a command line shell for the 90s" যদিও fish ("friendly interactive shell") ২০০৫ সালে ডেভেলপ করা হয়েছিল। "Glorious VGA Color"-এর বাইরে, অন্যান্য শেলের চেয়ে কিছু এনহ্যান্সমেন্ট রয়েছে:

  • অবৈধ সিনট্যাক্স বিশিষ্ট কমান্ডগুলো লাল রঙে দেখায় (Commands with invalid syntax display as red)
  • সঠিক সিনট্যাক্স নীল রঙে দেখায় (Correct syntax appears in blue)
  • অটো-কমপ্লিট সাজেশন (Auto-complete suggestions)
  • আপনার মেশিনের ম্যান পেজ (man pages) ベースড কমান্ড কমপ্লিশন (Command completion based on the man pages on your machine)

এই ফিচারটি নতুন ইনস্টল করা সফটওয়্যারের ম্যান পেজের সিনট্যাক্স আপনার অটো-কমপ্লিট সাজেশনে যোগ করে। আপনি যদি কমান্ড লাইনের সাথে আরও পরিচিত হতে চান, fish একটি চমৎকার জায়গা হতে পারে শুরু করার জন্য।

fish কীভাবে কাজ করে সেটা জানতে, টাইপ করুন:

sudo apt install fish
fish

৫. Z Shell

কোন লিনাক্স শেল (Shell) সেরা? ৫টি সাধারণ শেল তুলনা

অনেকেই এটি শেষে সেরা শেল রেখে দেওয়া মনে করবেন, যা সম্পূর্ণরূপে বুঝানো যায়। Zsh bash এবং ksh-এর সাথে সাদৃশ্য রেখে এগুলোতে পাওয়া অনেক ফিচার ইনকর্পোরেট (incorporate) করেছে সেইসাথে tcsh-রও। Zsh-এর ফিচারগুলো:

  • নেভিগেবল অটোকমপ্লিশন লিস্ট (Navigable autocompletion list)
  • সুপেরিয়ার স্পেলিং করেকশন (Superior spelling correction)
  • কমান্ড লাইন কমপ্লিশন (Command line completion)
  • টার্মিন্যাল জুড়ে শেয়ার্ড হিস্ট্রি (History shared across terminals)
  • Globbing (ফাইলনেমের জন্য ওয়াইল্ডকার্ড ক্যারেক্টার)

Zsh-এ Globbing খুব কার্যকর। টাইপ করুন:

vim /u/l/b/a<TAB>

এটি ফাইলটি খুলবে:

/usr/local/bin/autoupdate.sh

আপনি যদি ডিফল্ট কনফিগারেশনের সাথে না যান, Zsh প্রথম ব্যবহারে কনফিগার করার 데 কিছু সময় নিতে পারে। এটি ট্রাই করতে, লিখুন:

sudo apt install zsh
zsh

আমার জন্য কোন লিনাক্স শেল সেরা?

এই অপশনগুলো উপলব্ধ থাকাটা চমৎকার। প্রতিটি কম্পিউটিং ইতিহাসের একটি ঝলক, যেখানে প্রোগ্রামাররা সিদ্ধান্ত নিয়েছিল সেগুলো তাদের নিজস্ব উপায়ে করতে।

এই শেলগুলোতে বেস্তুত পার্থক্য স্ক্রিপ্টিং সিনট্যাক্সে (scripting syntax) পাওয়া যায়। প্রতিটি শেলের একটি নির্দিষ্ট নুয়анс (nuance) সেট থাকে যা সেগুলোকে একে অপরের থেকে আলাদা করে। বর্তমান অবস্থায়, bash মার্কেট শেয়ার (market share)-এ ডোমিনেট (dominate) করছে, যা হেল্প খুঁজে পাওয়া অনেক সহজ করে তোলে। Bash সহজে সেরা সার্বিক (all-rounder), সবচেয়ে অ্যাডভান্সড ব্যবহারকারীদের বাদে সবার প্রয়োজনীয়তা পূরণ করে।

আপনি একবার কোন লিনাক্স শেলে সেটল হলে, নিশ্চিত করুন যে আপনি শেল স্ক্রিপ্টিং-এর বেসিক্স (basics) সাথে পরিচিত।


  1. সেরা ৭টি জিমেইল সিআরএম তুলনা: কোন ইনবক্স ম্যানেজার সেরা?

  2. উইন্ডোজের মতো দেখতে যেসব লিনাক্স ডিস্ট্রিবিউশন সেরা

  3. উইন্ডোজ ১০-এ WSL দিয়ে Bash ইনস্টল ও ব্যবহার: ধাপে ধাপে টিউটোরিয়াল

  4. উইন্ডোজ ১০-এ লিনাক্স ব্যাশ শেল ইনস্টল করুন: সম্পূর্ণ ধাপে ধাপে গাইড