shell的增强别名
elfs的Python项目详细描述
shell的增强别名(名称可能会更改)
从PyPI安装
pip install elfs
从源安装
^{pr2}$为fish或xonsh启用动态选项卡完成
elfs --reg-fish
elfs --reg-xonsh
命令行界面
usage: elfs [options] [command [initial-arguments ...]]
Enhanced aLiases For Shells
optional arguments:
-h, --help show this help message and exit
-c add the command to your spellbook
-cc name desc rs add the command to your spellbook with comments
-d path add a directory path to your config
-e .ext path add an extension and the path to an executable for it
-l, --list list entire collection (or specify: cmd, dir, ext, files)
-s, --search search entire collection for command
-n, --dry-run print command instead of executing it
使用说明
- 在任何平台上运行python3
- 除非使用search(和select),否则默认行为是仅使用精确匹配查找命令,并按以下优先顺序进行选择
- 按配置中列出的目录顺序排列的文件
- 按顺序列出拼写本中命令的名称
- 尽可能明确地暗示文件扩展名
- 没有名称(或优先级较低的重复名称)的命令只能通过搜索运行
- 名称中带有空格的命令和文件需要转义或用引号括起来
- 第一个参数(不是elfs的选项)被视为命令或文件名,所有后续参数都传递给要执行的命令或文件(除了带有replace str的命令,请参见示例)
- 管道按预期工作,您可以从任何命令或文件导入或导出,但是如果您尝试管道进入搜索,它将解释为您的选择
示例
- 添加目录
> elfs -d ~/scripts
- 从任何目录运行脚本
> elfs myscript.py arg0 arg1 arg2
- 只有在明确
> elfs myscript arg0 arg1 arg2
- 添加扩展名以运行具有特定可执行文件的文件
> elfs -e .py /path/to/alternative/env/for/python
- 添加命令
> elfs -cc spam "echo spam to output 3 times" "" echo spam spam spam
- 运行命令
> elfs spam
spam spam spam
- 添加一个带有replace str(metavar:rs)的命令并运行它
> elfs -cc menu "even more spam" {} echo spam {} spam {}
> elfs menu bacon eggs
spam bacon spam eggs
- 提供较少的参数会导致重复
> elfs menu bacon
spam bacon spam bacon
- 额外的参数会正常传递
> elfs menu bacon eggs sausage spam
spam bacon spam eggs sausage spam
- 命令链接(需要在shell中运行,elfs使用Popen shell=False)
> elfs -cc "double spam" "" "" bash -c "echo spam && echo spam"
> elfs "double spam"
spam spam
- 在不运行命令的情况下查看它(引号可能会略有不同)
> elfs -n "double spam"
Command: bash -c "echo spam && echo spam"
- 列出所有命令和文件
> elfs -l
- 搜索带有模糊匹配的命令和文件,然后从匹配列表中选择要执行的
> elfs -s dble spam
- 添加命令以快速编辑配置
> elfs -cc "config" "" "" nano ~/.config/elfs/config.json
- 或者添加一个命令来编辑拼写本(您可以移动此文件)
> elfs -cc "spells" "" "" nano ~/.config/elfs/spellbook.json
将动态选项卡完成添加到脚本
- 使用以下json格式创建完成规则
[{"expression":"python_expression_for_rule_1","completions":["option1","option2\thello","option3\tworld"]},{"expression":"python_expression_for_rule_2","completions":["option1","option4\toptional description"]}]
- 其中python表达式在具有以下变量的命名空间中求值
- position=命令中的当前位置,其中0是当前脚本
- 例如
elfs[None] myscript.py[0] option[1] [2]
- 位置直到下一个空格
elfs[None] myscript.py[0] option[1] op[2]
才递增
- 例如
- command=目前为止的命令,由shlex解析
- 按照
position=2
的相同示例,command=["myscript.py", "option", ""]
- 和
command=["myscript.py", "option", "op"]
- 按照
- 例如
"position == 2 and command[1] in ['option1', 'option2']"
- position=命令中的当前位置,其中0是当前脚本
- 完成规则可以放置在以下任一位置
- 在
file_name.ext.elfs.json
内,例如myscript.py.elfs.json
- 或直接用
# TAB-COMPLETION START
和{}括在{ }中
- 在
# TAB-COMPLETION START[...]# TAB-COMPLETION END
- 项目
标签: