Xonsh是一种基于Python、跨平台、面向Unix的shell语言和命令提示符,本质上是一个Python解释器,具有运行Shell命令的良好语法。因此,您在熟悉的shell环境中拥有Python的所有功能。适用于所有主要系统,包括Linux、OSX和Windows。Bash脚本对于小型或批处理应用程序来说快速高效。Bash的局限性之一是它对数学函数和浮点数的处理。如果您是Python程序员,您会爱上它,因为它提供了庞大的函数库。对于RaspberryPi用户,Xonsh提供了许多编写一些极其精简脚本的机会。Python可用于连接第三方设备和传感器。在这篇文章中,我将通过一些示例来介绍Xonsh。有关系统特定的安装说明,请参阅Xonsh文档。要在RaspberryPi/Ubuntu/Debian上安装,请键入:linuxmi@linuxmi:~/www.linuxmi.com$sudoaptinstallxonsh要运行Xonsh,只需键入:xonsh开箱即用Xonsh提供配置向导和教程。使用Python可以直接在命令行中输入Python代码。Python的版本将取决于底层系统上加载的内容。要检查您的版本:linuxmi@linuxmi~/www.linuxmi.com$importsyslinuxmi@linuxmi~/www.linuxmi.com$sys.version'3.9.7(默认,2021年9月10日,14:59:43)\n[GCC11.2.0]'与交互式Python界面一样,您不需要打印语句即可查看输出:linuxmi@linuxmi~/www.linuxmi.com$7+916linuxmi@linuxmi~/www.linuxmi.com$a=5;b=6linuxmi@linuxmi~/www.linuxmi.com$a+b11linuxmi@linuxmi~/www.linuxmi.com$i="HelloWorld!"linuxmi@linuxmi~/www.linuxmi.com$i+"www.linuxmi.com"'你好,世界!www.linuxmi.com'使用BashXonsh首先使用Python,因此以ls(Bash列表命令)为例:在上面的示例中,***ls***首先用作Bash列表命令,但是如果变量定义了相同的名称,它被引用。linuxmi@linuxmi~/www.linuxmi.com$ls'VSCode.png'www.linuxmi.com.jpgwww.linuxmi.com.pywwww.linuxmi.comlinuxmi.comwww.linuxmi.com.mp4www.linuxmi.pnglinuxmi@linuxmi~/www.linuxmi.com$ls="Thisisavariablewww.linuxmi.com"linuxmi@linuxmi~/www.linuxmi.com$ls'Thisisavariablewww.linuxmi.com'first的第一个ls用作Bash列表命令,第二个是Xonsh显示变量ls。Xonsh将Bash语句处理为单行。这意味着:Bashfor/while/if语句需要全部在一行中记住在字符之间使用空格不支持行扩展(使用“\”)不支持Bash函数。您可以在Bash中使用Python用Python而不是Bash编写函数Bash中使用Python语句:@(Python语句)。以下是在Bash中使用Python的两个示例:linuxmi@linuxmi~/www.linuxmi.com$importsyslinuxmi@linuxmi~/www.linuxmi.com$echo@(sys.version)3.9.7(默认,2021年9月10日,14日):59:43)[GCC11.2.0]linuxmi@linuxmi~/www.linuxmi.com$echo@("LinuxMi.com="+str(8+9))LinuxMi.com=17示例linuxmi@linuxmi~/www.linuxmi.com$fromtkinterimport*linuxmi@linuxmi~/www.linuxmi.com$root=Tk()linuxmi@linuxmi~/www.linuxmi.com$canvas=Canvas(root,width=500,height=500)linuxmi@linuxmi~/www.linuxmi.com$canvas.pack()linuxmi@linuxmi~/www.linuxmi.com$img=PhotoImage(file="www.linuxmi.com.png")linuxmi@linuxmi~/www.linuxmi.com$canvas.create_image(0,0,anchor=NW,image=img)1linuxmi@linuxmi~/www.linuxmi.com$mainloop()在Python中使用BashBash变量可以直接在Python中使用,例如:使用Bash日期并将其传递给Pythonlinuxmi@linuxmi~/www.linuxmi.com$now=$(date)linuxmi@linuxmi~/www.linuxmi.com$print("Thetimeisnow:"+now)的现在时间:4月1日星期五19:17:13CST2022问题在不同的shell和子shell之间工作可能有点混乱。我发现我有时不知道我在哪个shell中工作。ps命令会告诉我xonsh*是否正在运行:linuxmi@linuxmi~/www.linuxmi.com$psPIDTTYTIMECMD7966pts/100:00:00bash8044pts/100:00:04xonsh11342pts/100:00:00ps我能够毫无问题地将Xonsh脚本传递给Bash脚本,但我发现对于某些操作我需要手动杀死Xonsh外壳。总结Xonsh适合专家和新手的日常使用。与其他shell不同,xonsh基于Python,并添加了额外的语法,以便于调用子进程命令、操纵环境和处理文件系统。xonsh命令提示符为用户提供了对xonsh语言的交互式访问。Xonsh对于寻求简单脚本解决方案的用户来说具有很大的潜力。就个人而言,我可能会坚持使用Bash或Python解决方案,但我还有其他选择。
