শেল ভাষা ইন্টারেক্টিভ ব্যবহারের জন্য উপযোগী। কিন্তু এই অপ্টিমাইজেশানটি প্রায়ই প্রোগ্রামিং ভাষা হিসাবে ব্যবহার করার বিরুদ্ধে ট্রেড-অফের সাথে আসে, যা কখনও কখনও শেল স্ক্রিপ্ট লেখার সময় অনুভূত হয়।
যদি আপনার শেল আরও স্কেলেবল প্রোগ্রামিং ভাষা বুঝতে পারে? বলুন, পাইথন?
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)
ভার্চুয়াল পরিবেশ একটু কঠিন হতে পারে। নিয়মিত ভার্চুয়াল এনভায়রনমেন্ট, বাশ-এর মতো সিনট্যাক্সের উপর নির্ভর করে, কাজ করতে পারে না। যাইহোক, Xonsh তার নিজস্ব ভার্চুয়াল এনভায়রনমেন্ট ম্যানেজমেন্ট সিস্টেম নিয়ে আসে যার নাম vox
.
vox
~/.virtualenvs
-এ পরিবেশ তৈরি, সক্রিয় এবং নিষ্ক্রিয় করতে পারে; আপনি যদি virtualenvwrapper
ব্যবহার করেন , এখানেই পরিবেশ ছিল।
মনে রাখবেন যে বর্তমান সক্রিয় পরিবেশ x
কে প্রভাবিত করে না onsh
. এটি একটি সক্রিয় পরিবেশ থেকে কিছু আমদানি করতে পারে না৷
$ 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
ম্যানেজার সম্ভাব্য সমস্ত xontribs
তালিকা করতে পারে এবং তাদের বর্তমান অবস্থা (ইনস্টল করা, লোড করা বা কোনটাই নয়)।
একটি xontrib
লেখা সম্ভব এবং শুধু PyPi
এ আপলোড করুন এটা উপলব্ধ করা. যাইহোক, এটাকে xontrib
-এ যোগ করা ভালো অনুশীলন index তাই Xonsh এটা সম্পর্কে আগে থেকেই জানে। এটি, উদাহরণস্বরূপ, কনফিগারেশন উইজার্ডকে এটির পরামর্শ দেওয়ার অনুমতি দেয়৷
আপনি যদি কখনও ভেবে থাকেন, "পাইথন কি আমার শেল হতে পারে?" তাহলে আপনি শুধুমাত্র একজন pip install xonsh
খুঁজে বের করা থেকে দূরে।