1. 首页

Bash “实趣”系列 —— 文件查找与预览(fzf)

一个致力于短小实用有趣的 Bash 系列 🌝

Bash “实趣”系列的第二篇来啦。

前言

今天介绍一个十分强大的 CLI 模糊查询工具命令 – fzf,由于 fzf 是一个通用的查询命令,基于 fzf 命令可以衍生出许许多多实用的命令。
image.png

(p.s 进入 github.com/junegunn/fz… 中获取更多信息)

使用

首先,我们需要安装 fzf 命令如下:

 bash
brew install fzf


然后我们可以直接在命行中快速体验了。示意如下,可以通过 fzf 模糊查找文件如下:
fzf.gif

妙用其一:文件查找

fzf 提供了丰富的布局参数,通过参数美化搜索界面:

 bash
alias fzf.w="fzf --height 40% --layout reverse --info inline --border \
    --preview 'file {}' --preview-window down:1:noborder \
    --color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'"


fzf-w.gif

妙用其二:文件预览

请提前安装 bat 命令:github.com/sharkdp/bat

为了可以在终端使代码着色,请提前安装 bat。

 bash
alias fzf.p="fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'"


fzf-p.gif

可以简化一下,下次只要输入 f 即可:

 bash
alias f="fzf.p"


妙用其三:Git 分支查找/Git Commit 查找

以此类推,可以通过 fzf 做到时髦的切换分支、或搜寻对应的 commit 内容。

 bash
_fzf_gco() {
  git branch | fzf | sed -e "s/* //g" | xargs -I {} git checkout {}
}


 bash
_fzf_gcs() {
  git log --oneline | fzf | grep -o -E "^[0-9a-z]+" | xargs -I {} git show {}
}


_fzf_gco.gif

妙用其四:文件结构预览

在 macOS 系统下提前安装 fd 命令:github.com/sharkdp/fd

还可以预览文件夹结构 🙂

 bash
_fzf_tree() {
  fd --type d | fzf | xargs -I {} tree -C {}
}


妙用无穷

正因为 fzf 是一个如此通用的命令,我们可以机智的结合其它 shell 命令玩出许多花样。

 bash
fzf | xargs ls -laG


搜索文件后用 vim 打开:

vim `fzf`


搜索进程:

bash
ps aux | fzf


搜索 bash 历史命令并拷贝到粘贴板:

Js中文网 – 全球前端挚爱的技术成长平台 www.javascriptC.com
Javascript中文网是以前端进阶资源教程分享为主的专业网站,包括:前端教程、JavaScript资讯、大厂面试题、typescript教程、程序人生、React.js源码解读、Vue3.js技术揭秘等,以帮助开发者成长为愿景的社区

history | fzf | sed -E "s/[[:space:]]*[[:digit:]]+[[:space:]]*//g" | pbcopy

搜索语法

这里粘贴一下 fzf 文档中的搜索语法,请配合使用。

Token

Match type

Description

sbtrkt

fuzzy-match

Items that match sbtrkt

'wild

exact-match (quoted)

Items that include wild

^music

prefix-exact-match

Items that start with music

.mp3$

suffix-exact-match

Items that end with .mp3

!fire

inverse-exact-match

Items that do not include fire

!^music

inverse-prefix-exact-match

Items that do not start with music

!.mp3$

inverse-suffix-exact-match

Items that do not end with .mp3

如果想要知道更多的 fzf 选项,可以运行 man fzf 获取详细信息。(比如 -m 命令代表多选)

小结

Anyway,本文介绍的 fzf 对于终端重度用户来说,应该也算是眼前一亮的命令了。同时,它在 Github 上也有 32k+ 的 star,怎么说也值得大家花点心思研究研究。

作者:苏里
链接:https://juejin.im/post/6886469309648879623

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

标题:Bash “实趣”系列 —— 文件查找与预览(fzf)

链接:https://www.javascriptc.com/4715.html

« 隐私计算+AI工程技术实践指南–整体介绍
ES6-ES10知识整合合集»
Flutter 中文教程资源

相关推荐

QR code