exa、fzf、bat软件的安装、使用


  文章仅涉及上述软件的简单使用,强烈个人向,更全面、详细的使用请参考官网。
 

一、新软件好在哪里

1. cat、less =》bat

  常用的cat命令作用是:连接多个文件并打印到标准输出。其缺点有:
  ① 查看体积较大文件时,文本在屏幕上快速闪过,快到根本无法看清内容。虽然提供了控制滚屏的快捷键,大家往往还是直接用Ctrl+c(中断)终止命令执行。还要用cat + 管道符 + less的方法处理。
  ②cat本身输出的内容是不带行号的,需要添加-n参数才能出来;
  ③cat的输入内容无法匹配搜索关键字,需要借助cat + 管道符 + less才能实现。
 
  此时bat的优点就体现出来了,它本身就相当于cat + 管道符 + less的功能,上述的缺点均能被解决,还附赠vim的自动高亮显示、文件内容过长时自动分页功能。
bat软件示例
 

2. ls => exa

  exa试图成为一个更有特色、更用户友好的 ls 版本,它的功能强大,比ls要友好,输出结果也会更快,最重要的是它不会与ls命令冲突。
  详细信息可见官网exa
 

3. ctrl+r => fzf

  它是一款使用 GO 语言编写的交互式的 Unix 命令行工具。可以用来查找任何列表内容、文件、历史命令、 本机绑定的host、 进程、Git 分支、进程等。所有的命令行工具可以生成列表输出的都可以再通过管道 pipe 到 fzf 上进行搜索和查找。

 

二、软件的安装

  简要介绍如下,conda详细安装、使用见上篇文章Linux下conda的安装与使用

1. conda安装软件

1、# 激活conda,进入base环境
      conda/source activate
2、#切换进入要安装的work环境
      conda activate work
3、#使用conda安装软件
      mamba install bat exa fzf
4、# 软件使用
      which bat exa fzf
      {abs_path}/bat 
      {abs_path}/exa 
      {abs_path}/fzf

2. 添加到bashrc

vim ~/.bashrc
## change command to alias
alias cat="*/Software/Miniconda/envs/test/bin/bat"
alias less="*/Software/Miniconda/envs/test/bin/bat"
alias ls="*/Software/Miniconda/envs/test/bin/exa"
## fzf的添加比较复杂,具体情况下面 《3.2 软件使用-fzf》的详细介绍

三、软件的使用

1. exa

参考文档中的某位博主将主要参数解释如下:
(1)显示配置

  • -1, –oneline:每行显示一个条目
  • -G, –grid:将条目显示为网格(默认)
  • -l, –long:显示扩展的详细信息和属性
  • -R, –recurse:递归到目录
  • -T, –tree: 作为树递归到目录
  • -x, –across:对网格进行横向排序,而不是向下排序
  • -F, –classify:按文件名显示类型指示符
  • –colo[u]r: 何时使用终端颜色
  • –colo[u]r-scale: 突出显示文件大小的级别
  • –icons:显示图标
  • –no-icons:不显示图标(总是覆盖 –icons)

(2)筛选配置

  • -a, –all: 显示隐藏文件和“点”文件
  • -d, –list-dirs:像普通文件一样列出目录
  • -L, –level=(depth):限制递归的深度
  • -r, –reverse:反转排序顺序
  • -s, –sort=(field):按哪个字段排序
  • –group-directories-first:在其他文件之前列出目录
  • -D, –only-dirs: 只列出目录
  • –git-ignore:忽略 .gitignore 中提到的文件
  • -I, –ignore-glob=(globs):要忽略的文件的 glob 模式(管道分隔)

(3)与-l搭配的可选参数

  • -b, –binary: 列出带有二进制前缀的文件大小
  • -B, –bytes:以字节为单位列出文件大小,不带任何前缀
  • -g, –group:列出每个文件的组
  • -h, –header:为每一列添加一个标题行
  • -H, –links:列出每个文件的硬链接数
  • -i, –inode:列出每个文件的inode号
  • -m, –modified:使用修改后的时间戳字段
  • -S, –blocks:列出每个文件的文件系统块数
  • -t, –time=(field):使用哪个时间戳字段
  • -u, –accessed:使用访问的时间戳字段
  • -U, –created:使用创建的时间戳字段
  • -@, –extended:列出每个文件的扩展属性和大小
  • –changed:使用更改的时间戳字段
  • –git:列出每个文件的 Git 状态,如果被跟踪或忽略
  • –time-style:如何格式化时间戳
  • –no-permissions:禁止权限字段
  • –octal-permissions:以八进制格式列出每个文件的权限
  • –no-filesize: 禁止文件大小字段
  • –no-user:禁止用户字段
  • –no-time:抑制时间字段
## exa -hlg -s=time -r 参数约等于 ls -lhtA(本人常用)
## 给常用参数设置快捷键,方便后续使用,参数含义:列出目录下文件及文件夹-l,显示列信息-h,显示文件属组信息-g,按时间排序-s=time,反向排序-r; 
    alias ll='exa -hlg -s=time -r'  
# 1、显示文件夹下的所有文件,包含隐藏文件;
   ll -a /dir/
# 2、递归显示目录及其包含的子目录的内容;
   ll  -R /dir/
# 3、树状递归显示目录及其包含的子目录的内容;
   ll -T /dir/
# 4、网上推荐的学习命令,显示了其他信息,比如索引节点、文件/目录大小、块、用户和组等等。
   exa -abghHliS /dir/
# 5、展示目录下的二级目录结构
   exa -hlg -s=time -r -D -T -L 2 /dir/

 

2. fzf

  fzf 最常用的快捷键应该就是 Ctrl + r 和 Ctrl + t 了。Ctrl-r 用来在历史中搜索,Ctrl-t 用来搜索当前文件夹下的内容。

  fzf 默认会以“extened-search"模式启动, 这种模式下你可以输入多个以空格分隔的搜索关键词, 如^music .mp3$, sbtrkt !fire.

TokenMatch typeDescription
sbtrktfuzzy-match匹配sbtrkt
^musicprefix-exact-match以music开头
.mp3$suffix-exact-match以.mp3结尾
'wildexact-match(quoted)精确包含wild
!fireinverse-exact-match不包含fire
!.mp3$inverse-suffix-exact-match不以.mp3结尾

常用使用功能如下:

# https://github.com/junegunn/fzf/wiki/Examples 以下使用均来自官网示例,参考文件也多是官网示例的翻译;
# 1、基础使用, 筛选当前路径下所有的文件,回车返回选择的文件;
    fzf
    fzf --preview 'cat {}' # 预览当前路径下文件
    
# 2、fzf把全屏显示变为指定高度40%;
export FZF_DEFAULT_OPTS='--height 40% --reverse --border' 

# 3、定义函数fd
# 在bashrc中定义函数fd, 作用:筛选当前目录下的所有文件夹, 回车就能直接到该目录下;目录结构越复杂,效果越明显;
fd() {
  local dir
  dir=$(find ${1:-.} -path '*/\.*' -prune \
				  -o -type d -print 2> /dev/null | fzf +m) &&
  cd "$dir"
}

# 4、定义函数fe
# 在bashrc中定义函数fe, 作用:筛选当前目录下的所有文件,回车直接vim打开所选文件;
fe() {
  IFS=$'\n' out=("$(fzf --preview 'cat {}' --query="$1" --exit-0 --expect=ctrl-o,ctrl-e)")
  key=$(head -1 <<< "$out")
  file=$(head -2 <<< "$out" | tail -1)
  if [ -n "$file" ]; then
    [ "$key" = ctrl-o ] && open "$file" || ${EDITOR:-vim} "$file"
  fi
}

# 5、定义函数fh
# 在bashrc中定义函数fh, 作用:近似等于ctrl+r,从历史命令中搜索想要重新执行的命令,回车返回选择的命令行;
# fh - repeat history
fh() {
  echo $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g')
}

# 因函数已加入到bashr,在命令行下,输入fzf、fd、fe、fh即可实现各自功能;

其他时候也可以临时搭配使用(几乎不使用):

#1、更改fzf的默认设置,全屏展示变为定制高度40%,预览光标所在文件的内容,回车返回选择的文件;
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --preview '(highlight -O ansi {} || cat {}) 2> /dev/null | head -500'"
# 2、搜索ps、history的历史记录;
ps -ef | fzf
history | fzf

 

3. bat

# 1、正常使用,打开一个或多个文件,输入“/”可触发搜索功能, "q"退出;
   bat file1 file2
# 2、输出文件指定行,左闭右闭;
   bat -r 10:15 qdel_v2.py
# 3、查看bat支持展示的165中语言及其对应的文件格式;
   bat -L
# 4、可以跟用管道符跟ls等命令连在一起;
   ls -l | bat
# 5、bat的结果均带行数信息,此时可以借用sed打印不带行数
   sed -n '10,15p' file

 

四、参考文档

软件官网

  1. cat命令
  2. bat软件
  3. exa软件
  4. fzf软件

2. 有关博客

  1. linux/unix 上那些炫酷的命令行工具(一)
  2. Bat – A Cat Clone with Syntax Highlighting and Git Integration
  3. linux exa命令比ls更好的展示文件体验
    exa-gitub
  4. 没想到exa命令真的这么好用,直接把ls替代了
    fzf-github
  5. 用fzf神器打造可快速查询并修改使用的Linux命令行历史记录
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值