python可插拔shell接口
pypsi的Python项目详细描述
用最少的代码开发可扩展且功能强大的命令行界面shell。
python可插入shell接口(pypsi)是一个用于开发 基于命令行的shell接口,类似于bash或csh。它的目的是 替换内置pythoncmd模块。
Pypsi面向大规模和快速原型界面 炮弹。bootstraping代码非常小,几乎没有样板文件。皮斯 具有大量开箱即用功能的船舶,所有这些都可以使用 或者被忽视。pypsi是可插入的,它允许命令、特性和插件 在自己的源文件和/或python类中独立开发。这个 生成一个非常干净的源代码存储库。设置和运行 shell非常小,大约有20-50行代码。
Pypsi的核心是可插拔的。有许多钩子允许插件作者 扩展和修改pypsi的核心行为。命令是独立的类 这使得分发、共享和修改变得容易。
功能
以下功能随PYPSI一起提供,并且是现成的。
- I/O重定向 <柔性API < / >
- 制表符完成
- 多平台
- 最小依赖性
- 颜色
- 每日会话提示和消息(MOTD)
- 自动帮助、使用信息和参数解析
- 换行
- 术语突出显示(grep)
- 表格
- 提示向导
- {TT1}$插件将现有的{TT1} $命令迁移到PYPSI
演示
可以运行demo.py源文件来演示基本命令和 pypsi附带的特性(可以从 位于https://github.com/ameily/pypsi/blob/master/demo.py的Git回购。命令 下面显示的都是可选的:pypsi不需要使用任何命令 或者插件。demo.py文件是对pypsi api和 设计。把它作为第一个外壳的起点。
变量
pypsi)> var name = "Paul" pypsi)> var house = "Atredis" pypsi)> echo My name is $name, and I belong to House $house My name is Paul, and I belong to House Atredis pypsi)> var --list name Paul house Atredis pypsi)> var -d name pypsi)> echo $name pypsi)> var name = "Paul $house" pypsi)> echo $name Paul Atredis
I/O重定向
pypsi)> echo Hello Hello pypsi)> echo Hello > output.txt pypsi)> echo Goodbye pypsi)> xargs -I{} "echo line: {}" < output.txt line: Hello line: Goodbye pypsi)> cat output.txt | grep ll Hello
系统命令
允许执行外部应用程序。命令模仿python的 os.system()函数。
pypsi)> ls pypsi: ls: command not found pypsi)> system ls include/ src/ README.md pypsi)> system ls | system grep md README.md
回退命令
允许开发人员设置哪一个命令在不存在的情况下调用 当前外壳。这是非常有用的,例如,如果你想退后 任何操作系统安装的可执行文件。在本例中,fallback命令是 system。
pypsi)> ls include/ src/ README.md
命令链
pypsi)> echo Hello && echo --bad-arg && echo goodbye Hello echo: unrecgonized arguments: --bad-arg pypsi)> echo Hello ; echo --bad-arg ; echo goodbye Hello echo: unrecgonized arguments: --bad-arg goodbye pypsi)> echo --bad-arg || echo first failed echo: unrecgonized arguments: --bad-arg first failed
多行命令
pypsi)> echo Hello, \ > Dave Hello, Dave pypsi)> echo This \ > is \ > pypsi \ > and it rocks This is pypsi and it rocks
宏
宏类似于bash中的函数。它们提供了创造 shell中的新命令。
pypsi)> macro hello > echo Hello, $1 > echo Goodbye from macro $0 > end pypsi)> hello Adam Hello, Adam Goodbye from macro hello
标签完成
使用pypsi完成tab比以往任何时候都容易。使用包含的command_completer() 函数、参数和子命令在^{tt10}时自动完成$ 按键。若要开始,请将command_completer的用法添加到 自定义命令的完整功能:
defcomplete(self,shell,args,prefix):frompypsi.completersimportcommand_completerreturncompletions=command_completer(self.parser,shell,args,prefix)
只需将为命令创建的解析器command_completer与 complete函数的标准参数,让pypsi工作,这是神奇的!
pypsi)> macro -<tab> --delete --help --list --show -d -h -l -s
对于添加到pypsi参数分析器中的每个参数,要获取的回调函数 可能的补全可以通过completer参数指定。 回调函数将从command_completerAnytime选项卡调用 当用户当前正在输入参数值时按下。示例:
# Snippet from macro.pyself.parser.add_argument('-s','--show',help='print macro body',metavar='NAME',completer=self.complete_macros)...defcomplete_macros(self,shell,args,prefix):# returns a list of macro names in the current shellreturnlist(shell.ctx.macros.keys())
pypsi)> macro --show <tab> hello goodbye
请参阅tail.py、help.py和macro.py以获取示例女同性恋。
提示向导
提示向导向用户提出一系列问题并请求输入。输入是 选项卡已完成、验证并返回。这个向导很容易使用 需要大量输入的组件的配置。
pypsi)> wizard +-----------------------------------------------------------------------------+ | Entering Example Configuration Wizard | +-----------------------------------------------------------------------------+ Shows various examples of wizard steps To exit, enter either Ctrl+C, Ctrl+D, or 'quit'. For help about the current step, enter 'help' or '?'. IP Address: <enter> Error: Value is required Local IP Address or Host name IP Address: 192.168.0.10 TCP Port [1337]: <enter> File path: /var/lo<tab> local/ lock/ log/ File path: /var/log/<tab> Xorg.1.log btmp faillog upstart/ Xorg.1.log.old dist-upgrade/ fontconfig.log wtmp alternatives.log distccd.log fsck/ apt/ dmesg lastlog bootstrap.log dpkg.log mongodb/ File path: /var/log/dpkg.log Shell mode [local]: asdf Error: Invalid choice Mode of the shell Shell mode [local]: remote Config ID Config Value ================================================================================ ip_addr 172.16.11.204 port 1337 path /var/log/dpkg.log mode remote
许可证
pypsi在isc许可证下发布。