基于 Rust 编写的实用命令行工具

作者:Mahmoud Ashraf

翻译:New Frontend

作为一个软件工程师,我大部分时间都花在终端模拟器下,因此在高效的终端模拟器下使用高效的工具很有必要。

许多基于 Rust 编写的软件帮我达成了这一点。这篇文章会介绍这些工具。

tl;dr

  • alacritty 使用 GPU 加速的跨平台终端模拟器

  • starship ???? 超级快、支持各种订制的极简命令行提示符,支持任意 shell

  • exa ls 现代版

  • bat 支持更多特性的 cat 克隆

  • delta git、diff 输出查看器

  • zoxide 更快捷地浏览文件系统

  • ripgrep 基于正则表达式递归搜索目录

  • fd 简单、快速、用户友好的 find 替代品

  • bottom 又一个跨平台的图形化进程/系统查看器

  • tldr ???? 众人一起编写的终端命令速查卡

  • spotify-tui Spotify 客户端命令行版 ????

  • gitui 超级 ???? 快的 git 字符界面客户端

Alacritty

首先介绍 Alacritty,这是最快的终端模拟器之一,因为它使用 GPU 渲染,而且它也是跨平台的。

配色方案、字体、透明度、键盘快捷键等都能定制。

Alacritty 不支持合字,但你可以用这个支持合字的分支。如果你用 Arch 的话,也可以通过 aur 安装。

基于 Rust 编写的实用命令行工具_第1张图片

Starship

我以前的命令行提示符用 zsh + powerlevel9k,后来转用 powerlevel10k,但在开新 shell 时我都观察到了延迟。starship 则能立刻启动。

它可以搭配任何 shell 使用,比如 bash、zsh、fish,甚至 powerShell.

下面的截图显示了我定制的提示符。

基于 Rust 编写的实用命令行工具_第2张图片

Exa

exa 是 ls 命令的一个实现,但自带色彩和图标,渲染也非常快。

我建了一个别名,用 exa 代替 ls.

if [ "$(command -v exa)" ]; then
    unalias -m 'll'
    unalias -m 'l'
    unalias -m 'la'
    unalias -m 'ls'
    alias ls='exa -G  --color auto --icons -a -s type'
    alias ll='exa -l --color always --icons -a -s type'
fi

我的 ls 和 ll 命令显示结果:

基于 Rust 编写的实用命令行工具_第3张图片

Bat

bat 是 cat 命令的一个实现,但加上了语法高亮。

我也给它建了个别名(我用 Nord 主题)。

if [ "$(command -v bat)" ]; then
  unalias -m 'cat'
  alias cat='bat -pp --theme="Nord"'
fi

基于 Rust 编写的实用命令行工具_第4张图片

Delta

delta 增强了 git diff 的显示效果,包括语法高亮、行号、双栏显示。

想使用 delta 的话,需要在 .gitconfig 中加上:

[core]
  pager = delta
[interactive]
  diffFilter = delta --color-only
[delta]
  side-by-side = true
  line-numbers-left-format = ""
  line-numbers-right-format = "│ "
  syntax-theme = Nord

在上面的配置中,delta 成为 git 命令输出的默认 pager,开启了双栏显示,并将主题设为 Nord。你可以运行以下命令列出所有主题,并从中选择想用的主题。

delta --list-syntax-themes

基于 Rust 编写的实用命令行工具_第5张图片

Zoxide

我没有使用任何文件浏览器,只用 cd 和 ls。

比方说,我的家目录下有一个存放各种项目的 projects 目录,如果我想访问其中一个项目,我需要输入:

cd ~/projects/mahmoudashraf.dev

使用 zoxide 后,只有第一次需要输入:

z ~/projects/mahmoudashraf.dev

之后不管当前目录是哪里,简单输入几个字母就可以再次访问这一目录。

z mah

Ripgrep

这是一个跨平台的命令行工具,可以使用正则表达式搜索目录下的文件内容。

推荐阅读 ripgrep is faster than {grep, ag, git grep, ucg, pt, sift} [1]一文。

下面是一些例子:

# 基于特定正则表达式搜索 javascript 文件
rg tjs "import React"

rg "\.content" -g "*.pug"

# 不仅可以查找,还可以替换,类似 sed 命令的查找替换功能
rg fast README.md --replace FAST

基于 Rust 编写的实用命令行工具_第6张图片

Fd

比 find 命令更友好,也更快。

默认情况下会忽略 .gitignore 中指定需要忽略的文件。

比如,把一些 png 格式的文件转换为 jpeg 格式:

fd -e png -x convert {} {.}.jpeg

再比如删除文件:

fd -H '^\.DS_Store$' -tf -X rm

bottom

它不是 top ???? 是 bottom。

它是一个跨平台的系统监视器。

基于 Rust 编写的实用命令行工具_第7张图片

Tldr

tldr 为各种命令行工具提供了速查卡,可以省下阅读完整的 man 帮助手册的时间。

基于 Rust 编写的实用命令行工具_第8张图片

更多工具

  • 如果你嫌 Spotify 的官方客户端太笨重,可以使用 spotify-tui 这个轻量级替代品。

  • 如果你喜欢通过 UI 界面操作 git,可以看下 gitui。

使用 Rust 编写的命令行工具和其他工具还有很多,详见 lib.rs/command-line-utilities [2]。

[1] ripgrep is faster than {grep, ag, git grep, ucg, pt, sift}:

https://url.leanapp.cn/PkLh2wy

[2] lib.rs/command-line-utilities:

https://url.leanapp.cn/hxvb3Hk

end

基于 Rust 编写的实用命令行工具_第9张图片

你可能感兴趣的:(linux,shell,mac,git,html)