如何将iPython设置为普通用户的简化命令shell

摘要
是否可以将i Python设置为普通用户(cd,ls,mkdir,rm等)的基本dos / bash命令行终端,然后公开一些额外的专有命令?

深度:
我在一家视频游戏公司工作,用户从未在生产渠道中体验过“好”的CLI.所以作为回应,我已经工作了一段时间在python中使用cmd.py编写CLI,重新创建常用的dos命令,然后使用我自己的自定义命令扩充它们以执行各种操作,例如:快速跳过预定义的生产文件夹,简化的perforce管理命令,使用递归的ant-glob模式查找/导入文件到我们的创作工具……等等……

在这个过程中,我偶然发现了ipython.我对它不是很熟悉,但我已经感觉到它应该是我应该使用的,因为它可以免费提供我想要的许多东西.它完美地处理了ansi的颜色.所有shell命令都可以通过“!”获得,可以使用“|,>,<”所有内置的shell功能都是免费的,好处还在继续...... 需要注意的是,我的目标受众很容易受到CLI的威胁……所以当他们输入“more textfile.txt”作为输入时,他们会期望打印文件内容认dos行为,而不是:

In [42]: more textfile.txt
  File "<ipython-input-42-e442b4ca857b>",line 1
    more file.txt
            ^
SyntaxError: invalid Syntax

当然,“!more textfile.txt”会做他们期望的,但我不希望他们必须输入“!”对于他们将使用的基本上95%的命令.

所以我正在寻找一种方式以一种完全简化的方式启动ipython,在我的理想(幻想或许)世界中:

>所有shell命令(cd,ls / dir,more,rm / del等等)都可以在最前面访问,而不需要任何“!”
>所有python命令(import,def,class,for,print,while等等)将无法访问,除了从预定义的几个专有命令执行各种管道操作,可能会保留基本算术命令?

作为奖励:一种在认ipython和非常克制和简化的命令shell替换版本之间交替的方法,我梦想着… ex:输入“normal”将恢复所有ipython的认行为……并输入“cli” “会回到简化版.

最后的注意事项:我正在寻找的可能是一个傻瓜的差事,我应该坚持使用我自己的笨拙的CLI脚本在命令shell中启动python.exe,并称它为一天……但我想如果我是像iPython这样做是远程可能的,Stackoverflow是我快速得到答案的地方:)

解决方法

IPython用于接近你所要求的东西,它在0.11版本中被删除,因为缺乏使用/测试和兴趣.我认为将其恢复是可以接受的,但是我不确定它将涉及的工作量,因为我们知道架构已经发生了很大的变化.

我将强调你可能想要/不想这样做的一些原因,以及一些替代和技术要点.

>你将永远无法获得IPython的完整真实shell体验
那些不会工作的东西(例如,在2个流程架构中获取,或者在其中使用破折号命令)
>防止Python的完全使用将非常困难.
>使用别名或魔法定义自己的命令非常简单. (已经指出了
评论,但并不总是有效

IPython本身正在工作的方式看起来存在的东西是有效的python,如果是这样的话.否则假设它是一个魔术,如果它是sens,将它转换为Python语法并执行.然后回退到别名.我猜逻辑可以颠倒,但确定smth是否是有效的shell可能很困难.

您也可以挂钩自己的输入trasformer SageMath在某些地方使用它来允许自定义语法.

我不确定“交替”部分会很容易,但IPython非常灵活,输入转换器是协程库,所以应该是可实时修改的,它仍然可能需要在IPython中使用modif我想要暴露正确的API.

您可能对编写完整的IPython“内核”感兴趣(不要害怕它看起来更简单).也就是说只是获得用户输入和发回输出的部分,其余部分是免费的.如果你看一下IJulia并运行ipython console –profile = julia,你将被丢弃在julia shell中.你也可以在rubyHaskell等地做同样的事情.其他优点是你不需要在python中编写内核,并且它可以与qtconsole,notebook emacs,vim和其他IPython前端一起使用.

我看到问题被提升了3次,我将补充说IPython是开源的,如果有人来,添加功能并帮助我们维护它,我们可以将它添加回核心.

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...