PathPicker-从bash输出中选择文件的python库

PathPicker是一个简单的命令行工具,解决了从bash输出中选择文件的永久性问题。PathPicker将:

  • 解析所有输入行以查找类似于文件的条目

  • 在方便的选择器UI中显示管道输入

  • 编辑您喜欢的文件 $EDITOR

  • 与他们执行任意命令

通过观看一个简单的演示,最容易理解:

例子

安装PathPicker之后,使用它就像将其管道输送到一样容易fpp。它需要各种各样的输入-请尝试以下所有选项:

git status | fpp

hg status | fpp

git grep "FooBar" | fpp

grep -r "FooBar" . | fpp

git diff HEAD~1 --stat | fpp

find . -iname "*.js" | fpp

arc inlines | fpp

还有很多其他您想要的东西。

安装

如果您使用的系统没有Homebrew,则安装PathPicker仍然很容易,您可以直接通过网盘下载PathPicker的源代码。

进阶功能

如上所述,PathPicker允许您还使用指定的文件执行任意命令。这是显示git checkout对所选文件执行的命令的示例:

所选文件将附加到命令前缀以形成最终命令。如果在命令中间需要文件,则可以改用$F令牌,例如:

cat $F | wc -l

另一个重要的注意事项是,默认情况下,PathPicker仅选择文件系统上存在的文件。如果您想跳过此操作(可能是到选定的已删除文件git status),只需使用--no-file-checks(或-nfc简称)标志运行PathPicker 。

PathPicker如何工作?

PathPicker是bash脚本和一些小型Python模块的组合。它实质上包括三个步骤:

首先,bash脚本将所有标准重定向到python模块,该模块解析并提取候选文件名。因为到PathPicker的输入可以是来自另一个程序的任何标准输出,所以使用一系列正则表达式提取这些候选对象。我们不会为每个程序创建专门的解析器,而是将所有内容视为嘈杂的输入,并通过正则表达式选择候选对象。为了限制对文件系统的调用次数(检查是否存在),我们对提取的候选对象进行了相当严格的限制。

不利之处在于,没有扩展名的没有扩展名的单个文件(如test)的文件将无法匹配。这是对PathPicker的已知限制,这意味着它有时有时无法在输入中找到有效文件。

接下来,curses向用户呈现一个内置的选择器UI 。在这里,您可以选择一些文件进行编辑或输入要执行的命令。

最后,python脚本将命令输出到bash文件,稍后由原始bash脚本执行。

它不是世界上最优雅的体系结构,但(在我们看来)提供了很多实用性。

(0)

相关推荐