版主
发表于 2023-7-10 15:55:48
通常,你键入带有搜索参数的命令,按回车键,然后它会显示搜索结果。 你可以通过模糊搜索来提升终端中的文件搜索体验。 模糊搜索是一种近似搜索算法或技术。在这种搜索中,通过名称搜索指定位置的文件,并实时显示结果给用户。 模糊搜索在网络搜索引擎中很受欢迎,用户开始输入术语后,它会开始显示与该术语相关的结果。 在本文中,我将讨论两个命令行工具,它们可以让你在 Linux 中执行模糊搜索:
fzf 是一款可用于 Linux 的模糊搜索工具,你可以通过它进行交互式文件搜索。 在 Ubuntu 中安装 fzf,打开终端并运行以下命令: sudo apt install fzf虽然 fzf 本身可以正常工作,但最好与其他工具配合使用,以充分发挥其功能。 使用 fzf打开终端并运行: fzf这将打开一个 fzf 提示符,在当前工作目录中搜索文件。 在终端中运行 fzf 命令 为 fzf 应用边框你可以使用 --border 选项为 fzf 应用边框,有多种边框可用,如 rounded(圆角)、sharp(尖角)等。 fzf --border=rounded运行带有边框选项设置为 rounded 和 sharp 的 fzf 命令 应用背景和前景颜色使用颜色属性,你可以为 fzf 设置 ANSI 颜色,可以作为背景、前景或两者都设置。 为 fzf 应用颜色,用户指定了颜色 fzf --color="bg:black,fg:yellow"你可以串联这些选项,使 fzf 在视觉上更加美观。 现在,让我展示一些 fzf 模糊搜索的实际用法。 使用 fzf 在 Bash 历史中进行搜索当然,Bash 历史记录中有 CTRL+R 的反向搜索功能。但如果你想使用 fzf 来获得更好的外观,可以运行以下命令: history | fzf使用 fzf 模糊搜索在 bash 历史中进行搜索 使用 fzf 结合 tree 命令tree 命令 会列出文件和目录,并显示它们的层级关系。 使用 fzf 结合 tree 命令可以帮助你找到特定文件的绝对路径。 tree -afR /home/$USER | fzf运行 Tree 命令并将输出传递给模糊搜索 在 fzf 中预览文件 有时,如果你可以获得你搜索的文件的小型预览,那会很有帮助。 幸运的是,fzf 提供了一个预览选项。你可以使用 --preview 来访问它。我在这里使用 find 命令使其更加有用。 find /home/$USER -type f | fzf --preview 'less {}'在这里,当你滚动浏览结果时,它将使用 less 显示文本文件。
如果你已安装了 bat,也可以使用它来预览文件。 find /home/$USER -type f | fzf --preview 'bat --color always {}'![]() 使用 bat 作为 FZF 预览功能的文本查看器 对于 Ubuntu 用户,可以使用 batcat 来调用 bat。因此运行: find /home/$USER -type f | fzf --preview 'batcat --color always {}'从任何地方使用 fzf 进入任何目录(高级技巧) 这比以前要复杂一些。在这里,你不能直接将 fzf 和 cd 连接在一起,因为它们是不同的进程。 你可以创建一个别名并使用以下命令: cd $(find /home/$USER -type d | fzf)或者,你可以按照下面解释的方法进行操作。 为此,你可能需要在 bashrc 中添加一个函数。让我将这个函数称为 finder。现在请添加以下行到你的 bashrc 中。 finder() { local dir dir=$(find required/location/to/search/and/enter -type d | fzf) if [[ -n "$dir" ]]; then cd "$dir" || return fi}现在,你应该 输入路径,其中包含你要搜索并进入的目录。 例如,我已经使用 /home/$USER 替换了该部分,表示我要从任何位置进入我的主目录中的任何目录。 保存你的 bashrc 文件后,要么重启终端,要么运行以下命令: source ~/.bashrc之后,你可以在终端上运行 finder 命令,一旦找到要进入的目录,按回车键即可。 使用 fzf 命令结合 cd 命令进入任意目录 将选择内容复制到剪贴板到目前为止,你已经了解了如何使用 fzf,它提供了搜索结果或预览。 现在,如果你想要复制某个项目的位置,你不必手动执行此操作。也有相应的解决方案。 首先,确保你已经安装了 xclip。 sudo apt install xclip然后像这样将其传递给 xclip: fzf | xclip -selection clipboard这将复制你按下回车键的那些行到剪贴板上。 其他用途正如我之前所说,你可以使用任何涉及大量文本,并希望交互式搜索特定内容的命令。
与 fzf 不同,fzy 是一个模糊选择器,它会根据输入提供一个菜单供你选择。 例如,如果你将 fzy 与 ls 命令一起使用,它将给你提供一个类似菜单的界面。 使用 ls 命令的 fzy 命令 默认情况下,它会显示十个条目。 使用 fzy 进入目录与 fzf 类似,你也可以使用 fzy 进入当前工作目录中的目录: cd $(find -type d | fzy)或者使用你喜欢的编辑器打开文件: nano $(find -type f | fzy)下面的命令将在 Ubuntu 中打开一个专门的自定义提示符,用于模糊搜索,你可以通过滚动来预览文本文件。 find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom为了方便访问,可以在你的 bashrc 文件中为此创建一个别名。 或者在使用 timg 命令行图像查看器时,在 fzf 中进行图像预览并滚动。使用以下命令进行安装: sudo apt install timgfzf --preview 'timg -g 200x100 {}' --preview-window=right:90 对于那些喜欢折腾的人,可以尝试对此部分进行优化。 现代化的替代方案大多数 Linux 命令都是从 UNIX 时代继承下来的。它们虽然老旧,但功能如预期。但这并不意味着它们不能改进。 我的意思是,你不需要重新发明轮子,但你总是可以努力改进轮子。 像 fzf 和 fzy 这样的现代化工具将 Linux 终端中的文件搜索提升到了一个新的水平。以下是一些其他有趣的命令行工具。 我尝试给出了这些模糊搜索工具的一些实际示例。希望你对它们感到足够有启发性。如果你打算使用它们,请在评论中告诉我。 |