PathPicker - bash 中的文件查看器


BSD
跨平台
Python

软件简介

PathPicker

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

  • 解析所有传入行以查找看起来像文件的条目

  • 在方便的选择器的用户界面中呈现管道输入

  • 允许您:

    • 编辑您喜欢的所选文件 $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

还有你能想到的任何其他东西!

要求

PathPicker需要Python> 2.6或> 3.0。

支持的壳:

  • 击完全支持并且效果最好。

  • ZSH也受支持,但在命令行模式下不会有像别名扩展这样的功能。

  • 最新版本支持csh / fish / rc,但在旧版本的PathPicker中可能存在怪癖或问题。但请注意,如果您的默认shell和当前shell不在同一系列中(bash / zsh … vs fish / rc) ,需要则手动将环境变量导出$SHELL到当前的外壳。

安装PathPicker

家酿

使用Homebrew for mac安装PathPicker最简单:

  • brew update (因为它是新的,所以下拉配方)

  • brew install fpp

Linux的的

在Debian的系统上,通过可以从这里安装Debian的软件包来完成安装要在本地构建包,请运行以下步骤:

$ git clone https://github.com/facebook/PathPicker.git 
$ cd PathPicker/debian 
$ ./package.sh 
$ ls ../fpp_0.7.2_noarch.deb

在Arch Linux上,可以从Arch User Repository(AUR)安装PathPicker.AUR fpp-
git包

如果您使用的是其他系统,或者更喜欢手动安装,请按照以下说明操作。

手动安装

但是,如果您使用的是没有自制的系统,那么安装PathPicker仍然非常容易,因为它实际上只是一个调用的Python的bash的脚本这些步骤或多或少概述了流程:

cd /usr/local/ # or wherever you install apps
git clone https://github.com/facebook/PathPicker.git
cd PathPicker/

在这里,我们从回购中的的bash脚本创建一个符号链接,/usr/local/bin/假设它在当前 $PATH

ln -s "$(pwd)/fpp" /usr/local/bin/fpp
fpp --help # should work!

附加组件

对于tmux用户,您可以另外安装tmux-fpp添加密钥组合以在最后收到的路径上运行PathPicker
stdout。它使得跳转到文件选择模式变得更加容易 - 请在此处查看

高级功能

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

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

cat $F | wc -l

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

PathPicker的工作原理

PathPicker是的bash脚本和一些小型的Python模块的组合它基本上有三个步骤:

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

这样做的缺点是,没有扩展名(如test)的单个单词的文件将无法匹配。这是PathPicker的已知限制,意味着它有时无法在输入中找到有效文件。

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

  • 最后,蟒蛇脚本将命令输出到bash的文件,该文件稍后由原始的bash脚本执行。

它不是世界上最优雅的建筑,但(我们认为)提供了很多实用性。

文档和配置

有关所有文档和配置选项,请参阅输出fpp --help