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),否则默认行为是仅使用精确匹配查找命令,并按以下优先顺序进行选择
    1. 按配置中列出的目录顺序排列的文件
    2. 按顺序列出拼写本中命令的名称
    3. 尽可能明确地暗示文件扩展名
  • 没有名称(或优先级较低的重复名称)的命令只能通过搜索运行
  • 名称中带有空格的命令和文件需要转义或用引号括起来
  • 第一个参数(不是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']"
  • 完成规则可以放置在以下任一位置
    • file_name.ext.elfs.json内,例如myscript.py.elfs.json
    • 或直接用# TAB-COMPLETION START和{}括在{}中
# TAB-COMPLETION START[...]# TAB-COMPLETION END

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

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置