ภาษาของเชลล์มีประโยชน์สำหรับการใช้งานเชิงโต้ตอบ แต่การเพิ่มประสิทธิภาพนี้มักมาพร้อมกับข้อแตกต่างในการใช้ภาษาโปรแกรม ซึ่งบางครั้งรู้สึกได้เมื่อเขียนเชลล์สคริปต์
จะเกิดอะไรขึ้นถ้าเชลล์ของคุณเข้าใจภาษาการเขียนโปรแกรมที่ปรับขนาดได้มากขึ้นด้วย พูดสิ ไพธอน?
ป้อน Xonsh
การติดตั้ง Xonsh นั้นง่ายพอๆ กับการสร้างสภาพแวดล้อมเสมือน การรัน pip install xonsh[ptk,linux]
แล้วเรียกใช้ xonsh
.
ในตอนแรก คุณอาจสงสัยว่าทำไม Python shell ของคุณมีข้อความเตือนแปลกๆ:
$ 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 รองรับการเสร็จสิ้นสำหรับทั้งคำสั่งเชลล์และนิพจน์ Python โดยใช้ Prompt Toolkit เสร็จสิ้นเป็นข้อมูลทางสายตา แสดงให้เห็นความสำเร็จที่เป็นไปได้และมีรายการดรอปดาวน์ในวง
นอกจากนี้ยังสนับสนุนการเข้าถึงสภาพแวดล้อม มันใช้ฮิวริสติกที่เรียบง่ายแต่ทรงพลังสำหรับการนำประเภท Python ไปใช้กับตัวแปรสภาพแวดล้อม ค่าเริ่มต้นคือ "สตริง" แต่ตัวอย่างเช่น ตัวแปรพาธจะแสดงรายการโดยอัตโนมัติ
$ '/usr/bin' in $PATH
True
Xonsh ยอมรับตัวดำเนินการทางลัดบูลีนแบบเชลล์หรือแบบ Python:
$ 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
ซึ่งหมายความว่ามีการตีความคีย์เวิร์ด Python หากเราต้องการพิมพ์ชื่อหนังสือ Dr. Seuss ที่มีชื่อเสียง เราต้องอ้างอิงคำหลัก
$ 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
ดัชนีเพื่อให้ Xonsh ทราบล่วงหน้า ตัวอย่างเช่น ตัวช่วยสร้างการกำหนดค่าสามารถแนะนำได้
หากคุณเคยสงสัยว่า "Python เป็นเชลล์ของฉันได้ไหม" ถ้าอย่างนั้นคุณก็เป็นเพียง pip install xonsh
ห่างไกลจากการค้นพบ