命令行常用工具的替代品

Posted by Leo on September 23, 2023

目的:了解好用的命令行工具

一、exa

exa 是ls命令的替代品,可以彩色输出目录内容,更容易辨识。

1
$ exa --long --git

上面命令中,参数–git表示输出文件的 Git 状态。

N:新文件 M:文件有变动 I:该文件被忽略

除了平铺显示,exa还支持目录的树状显示。

1
$ exa --tree --level=2

exa 有可供你尝试和探索的很多选项。

1
exa -abghHliS

你可以通过在终端中运行以下命令来获取完整的选项列表:

exa --help 但是,如果你想了解 exa 所提供的功能,可以查看其 Git 存储库 上的 官方文档。

exa本身是一个二进制文件,不需要安装,下载后直接使用,速度也相当快。

  • 1.1 在 Linux 系统上安装 exa

    exa 最近很流行,因为许多发行版开始将其包括在其官方软件库中。也就是说,你应该可以使用你的 [发行版的包管理器] 来安装它。

    从 Ubuntu 20.10 开始,你可以使用 apt 命令来安装它:

    sudo apt install exa Arch Linux 已经有了它,你只需要 使用 pacman 命令 即可:

    sudo pacman -S exa 如果它无法通过你的包管理器安装,请不要担心。毕竟它是一个 Rust 包,你可以很容易地用 Cargo 安装它。请确保在你使用的任何发行版 或 Ubuntu 上安装了 Rust 和 Cargo。 sudo apt install cargo 安装 Rust 和 Cargo 后,使用此命令安装 exa:

    cargo install exa

    export PATH=$PATH:/home/lsh/.cargo/bin

  • 1.2 值得从 ls 切换到 exa 吗? 对于类 UNIX 操作系统的新手来说,exa 可能是用户友好的,它牺牲了在脚本中容易使用的能力,以换取“易用性”和外观。其中,显示得更清楚并不是一件坏事。

    无论如何,ls 就像通用命令。你可以将 exa 用于个人用途,但在编写脚本时,请坚持使用 ls。当预期输出与任一命令中的实际输出不匹配时,ls 和 exa 之间一个 [或多个] 标志的差异可能会让你发疯。

二、broot

broot 可以看作增强版的ls替代品,实际是一个终端里面的文件管理器。

使用时,可以先列出当前目录的文件信息。

$ br -sdph 上面命令中,参数含义如下。

1
2
3
4
-s:显示文件体积
-d:显示文件时间
-p:显示文件权限
-h:显示隐藏文件。

可以看到,它默认以树状结构,展开子目录。

然后,在这个界面中,可以完成各种文件操作。

1
2
3
4
5
6
搜索:输入搜索词
复制:输入:cp <复制后的文件名>
删除:输入:rm
改名:输入:mv <新文件名>
退出:输入:q
甚至还可以预览文件:通过上下箭头选中文件,然后按下右箭头→,就会打开外部关联程序;按下ctrl + →,则在当前窗口预览文件。

三、zoxide

zoxide 是 cd 命令的替代品,用来切换目录。

它的用法与cd完全一样,进入目录/tmp就是下面的命令。

$ z /tmp 它的特色是部分匹配,可以只写路径的一部分,它自动找到最经常使用的匹配项。

比如,你经常用它进入目录/tmp,那么以后只要输入z t,它就会自动将t匹配为/tmp,从而进入该目录。

$ z t

四、bat,fx,hexyl

bat 是cat命令的替代品,输出文本文件的内容,并且带有cat所没有的代码高亮和行号。

$ bat README.md

如果浏览的是 JSON 文件,还可以使用 fx 或者 jq。

$ fx data.json

如果浏览的是二进制文件,使用 hexyl。

$ hexyl example.jpg

五、diff-so-fancy

diff-so-fancy 是 git diff 的替代品,使得命令行的 diff 操作具有类似 GitHub 的页面效果。 安装后,参考官方文档,将它配置为 Git 的默认 diff 工具就可以了。以后每次执行git diff,就会输出它的执行结果。

六、fd,fzf

fd 是find命令的替代品,用于文件名搜索。

它的用法比find更符合直觉。下面例子是搜索目录/tmp里面(包括子目录),所有含有dog的文件名。

1
2
3
4
5
# find 的写法
$ find /tmp -iname '*dog*'

# fd 的写法
$ fd dog /tmp

fd内部采用正则搜索,如果想使用模糊搜索,比如找出包含三个字符d、o、g的文件名,则需要另外安装fzf。

$ find . -type f | fzf

七、ripgrep

ripgrep 是grep命令的替代品,用来搜索文件内容。

它跟grep的用法类似。下面例子是搜索当前目录里面,所有内容包含字符串foo的 Markdown 文件。

1
2
3
4
5
# grep 的写法
$ grep foo *.md

# ripgrep 的写法
$ rg foo *.md

ripgrep的主要优势在于,默认带有行号和搜索词高亮,速度也更快。

八、McFly

McFly 是ctrl-r的替代品,用来搜索 Shell 的操作历史。

安装以后,只要按下ctrl-r,就会出现一个更好用的搜索界面。

九、choose

choose 是cut命令的替代品,用来选中指定的栏位。

它的优势主要是语法更简单,比如输出文件的第一列。

1
2
3
4
5
6
7
8
9
# cut 的写法
$ cat data.txt | cut -d " " -f 1
# or
$ cut -d " " -f 1 data.txt

# choose 的写法
$ cat data.txt | choose 0
# or
$ choose 0 -i data.txt

十、duf,ncdu

duf 是df命令的替代品,用来显示磁盘占用情况。 $ duf 它是彩色的表格输出,更容易查看。

ncdu 是du命令的替代品,用来显示每个目录占用的大小。 $ ncdu 你还可以上下移动,选中指定目录查看。

十一、htop,procs

htop 是 top命令的替代品,用来显示系统的实时状态。它带有高亮输出,并可以切换不同的选项卡。 $ htop

procs 是ps命令的替代品,用来高亮显示进程信息。 $ procs

十二、httpie,dog

httpie 是 curl 的替代品,用来发出 HTTP 请求。

它的特点是语法更简单,并且服务器的返回内容会格式化高亮显示。

下面是发出 PUT 请求的例子。

1
2
3
4
5
# curl 的写法
$ curl -X PUT -d hello=world example.com

# httpie 的写法
$ http PUT example.com hello=world 

dog 是dig命令的替代品,用来发出 DNS 查询。它的用法比dig简单多了。

1
2
3
4
5
# 默认查询 A 记录
$ dog example.net

# 查询多个记录
$ dog example.net A NS MX

安装

  1. 安装homebrew Linux电脑 安装脚本:
    1
    
    rm Homebrew.sh ; wget https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh ; bash Homebrew.sh
    

Linux电脑 卸载脚本:

1
rm HomebrewUninstall.sh ; wget https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh ; bash HomebrewUninstall.sh

苹果电脑 常规安装脚本

1
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

苹果电脑 卸载脚本:

1
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

Linux需要重启电脑 或者暂时运行 source /etc/profile 否则可能无法使用 初步介绍几个brew命令 查看版本:brew -v 更新brew版本:brew update 查找:brew search python(其中python替换为要查找的关键字) 安装:brew install python 安装完成输入 python3 -h 查看 本地软件库列表:brew ls

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
brew install \
bat \
bottom \
broot \
btop \
choose-rust \
dog \
duf \
exa \
fd \
fzf \
git-delta \
glances \
gtop \
httpie \
jq \
lsd \
mcfly \
orf/brew/gping \
procs \
ripgrep \
rs/tap/curlie \
the_silver_searcher \
tldr \
xh \
zoxide