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脚本执行。
它不是世界上最优雅的体系结构,但(在我们看来)提供了很多实用性。
联系客服