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

Xonsh: পাইথনের শক্তি ও শেলের উত্পাদনশীলতার মিলন

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

কি হব যদি আপনার শেলও একটি আরও স্কেলেবল প্রোগ্রামিং ভাষা বুঝতে পারে? মানে, পাইথন?

Xonsh-এ স্বাগতম।

Xonsh ইনস্টল করা খুব সহজ: একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন, pip install xonsh[ptk,linux] চালান, তারপর xonsh চালান।

প্রথমে আপনি আশ্চর্য করতে পারেন যে আপনার পাইথন শেলের একটি অদ্ভুত প্রম্পট কেন:

$ 1+1
 2

বহুত সুন্দর ক্যালকুলেটর!

$ print("hello world")
 hello world

আমরা অন্যান্য ফাংশনও কল করতে পারি:

$ from antigravity import geohash
 $ geohash(37.421542, -122.085589, b'2005-05-26-10458.68')
 37.857713 -122.544543

তবে, আমরা এটিকে সাধারণ শেলের মতও ব্যবহার করতে পারি:

$ echo "hello world"
 hello world

এবং আমরা মিক্স এন্ড ম্যাচও করতে পারি!

$ for i in range(3):
 . echo "hello world"
 .
 hello world
 hello world
 hello world

Xonsh প্রম্পট টুলকিট ব্যবহার করে শেল কমান্ড এবং পাইথন এক্সপ্রেশনের উভয়কেই কমপ্লিশন সমর্থন করে। কমপ্লিশনগুলো দৃষ্টিগতভাবে তথ্যপূর্ণ, সম্ভাব্য কমপ্লিশন দেখায় এবং ইন-ব্যান্ড ড্রপডাউন লিস্ট থাকে।

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

$ '/usr/bin' in $PATH
 True

Xonsh শেল-স্টাইল বা পাইথন-স্টাইল বুলিয়ান শর্টকাট অপারেটর দুটোই গ্রহণ করে:

$ cat things
 foo
 $ grep -q foo things and echo "found"
 found
 $ grep -q bar things && echo "found"
 $ grep -q foo things or echo "found"
 $ grep -q bar things || echo "found"
 found

এই মানে পাইথন কিওয়ার্ডগুলো ইন্টারপ্রেট করা হয়। যদি আমরা ড. সিউসের বিখ্যাত বইয়ের টাইটেল প্রিন্ট করতে চাই, তবে আমাদের কিওয়ার্ডগুলো কোট করতে হবে।

$ echo green eggs "and" ham
 green eggs and ham

যদি না করি, তবে আশ্চর্য হবে:

$ echo green eggs and ham
 green eggs
 xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
 xonsh: subprocess mode: command not found: ham
 Did you mean one of the following?
 as: Command (/usr/bin/as)
 ht: Command (/usr/bin/ht)
 mag: Command (/usr/bin/mag)
 ar: Command (/usr/bin/ar)
 nm: Command (/usr/bin/nm)

ভার্চুয়াল এনভায়রনমেন্টগুলো কিছুটা জটিল হতে পারে। ব্যাকtick-নির্ভর বাশ-লাইক সিনট্যাক্সের কারণে সাধারণ ভার্চুয়াল এনভায়রনমেন্ট কাজ করে না। তবে Xonsh নিজস্ব ভার্চুয়াল এনভায়রনমেন্ট ম্যানেজমেন্ট সিস্টেম vox দিয়ে আসে।

vox ~/.virtualenvs-এ এনভায়রনমেন্ট তৈরি, এক্টিভেট ও ডিএক্টিভেট করতে পারে; যদি আপনি virtualenvwrapper ব্যবহার করে থাকেন, তবে এনভায়রনমেন্টগুলোই সেখানে ছিল।

লক্ষ্য করুন যে বর্তমান এক্টিভেট করা এনভায়রনমেন্ট xonsh-কে প্রভাবিত করে না। এটি এক্টিভেট করা এনভায়রনমেন্ট থেকে কিছুই ইম্পোর্ট করতে পারে না।

$ xontrib load vox
 $ vox create my-environment
 ...
 $ vox activate my-environment
 Activated "my-environment".
 $ pip install money
 ...
 $ python
 ...
 >>> import money
 >>> money.Money('3.14')
 $ import money
 xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
 ModuleNotFoundError: No module named 'money'

প্রথম লাইন vox এক্টিভেট করে: এটি একটি xontrib, Xonsh-এর জন্য একটি থার্ড-পার্টি এক্সটেনশন। xontrib ম্যানেজার সব সম্ভাব্য xontrib-গুলো এবং তাদের বর্তমান অবস্থা (ইনস্টলড, লোডেড, অথবা কোনোটিই না) লিস্ট করতে পারে।

একটি xontrib লিখে সেটি PyPi-এ আপলোড করা সম্ভব যাতে এটি উপলব্ধ হয়। তবে ভালো অভ্যাস হলো এটিকে xontrib ইনডেক্সে যোগ করা যাতে Xonsh আগে থেকে সেটি সম্পর্কে জানে। এটি কনফিগারেশন উইজার্ডকে সাজেস্ট করার মতো সুবিধা দেয়।

আপনি যদি কখনো ভাবেন, "কি পাইথন আমার শেল হতে পারে?" তবে আপনি শুধু pip install xonsh দূরত্বে আছেন জানতে।

  1. অভিজ্ঞ লিনাক্স ব্যবহারকারীদের elementary OS ভালোবাসার ৬টি কারণ

  2. Redis Enterprise: ৫টি মূল সুবিধা যেগুলো DevOps টিমে নির্ভর করে

  3. উইন্ডোজ ১০-এর সাধারণ চ্যালেঞ্জ ও সমাধান: কেন উইন্ডোজ ১০ খারাপ এবং কীভাবে ঠিক করবেন

  4. WhatsApp-র ১০ বছর: এখনো কেন এটি আপনার পছন্দের মেসেজিং অ্যাপ