python可插拔shell接口

pypsi的Python项目详细描述


https://coveralls.io/repos/ameily/pypsi/badge.svg?branch=master&service=githubhttps://travis-ci.org/ameily/pypsi.svg?branch=master

用最少的代码开发可扩展且功能强大的命令行界面shell。

python可插入shell接口(pypsi)是一个用于开发 基于命令行的shell接口,类似于bash或csh。它的目的是 替换内置pythoncmd模块。

Pypsi面向大规模和快速原型界面 炮弹。bootstraping代码非常小,几乎没有样板文件。皮斯 具有大量开箱即用功能的船舶,所有这些都可以使用 或者被忽视。pypsi是可插入的,它允许命令、特性和插件 在自己的源文件和/或python类中独立开发。这个 生成一个非常干净的源代码存储库。设置和运行 shell非常小,大约有20-50行代码。

Pypsi的核心是可插拔的。有许多钩子允许插件作者 扩展和修改pypsi的核心行为。命令是独立的类 这使得分发、共享和修改变得容易。

释放量

pypsi源代码托管在GitHub 版本存储在PyPI。这个 最新版本也可以通过pip安装:

$ pip install pypsi

文档可以在GitHub Pages上找到。

功能

以下功能随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_completercomplete函数的标准参数,让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.pyhelp.pymacro.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许可证下发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java中模拟按键?   尽管元素存在,但HtmlUnit中的java ElementNotFoundException   在Java中,长双精度并发写入不是原子的吗?   java如何在另一个对象数组中打印对象的int值?   java在显示或更改视图后执行一些代码   java JFR:读取时发生OutOfMemoryError。jfr文件   java Android助手检查是否购买   java这种设计模式的好处是什么?   Weblogic 10.3中针对托管服务器的java部署问题   java如何获取字符串。在编译时投诉的格式   声明字符串数组时发生java错误   java JPA在多个并行线程中从表中删除时发生死锁   java Android:在按钮动画之后启动活动   java并发与JMS主题在春季   使用Lucene spatial search/DateRangePrefixTree进行java日期范围查询?   java可选接口问题   JavaDbUnit没有在每个方法之后清洗和插入数据库,所以测试不是独立的   java在IAIK PKCS11包装器中一对私钥和证书如何匹配?