3

原生Linux命令不好使?试试这14款替代工具吧,好用到爆!-51CTO.COM

 2 years ago
source link: https://os.51cto.com/article/708366.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

c1f66db584c4abfbab529539798273df9606d7.jpg

一、lsd

lsd[2]是一个基于 Rust 语言编写的 ls 命令替代品,增加了颜色、图标、树视图、更多格式选项等。可以在 Archlinux、Fedora、macOS、FreeBSD、Windows、Android、Ubuntu、Debian 等多种操作系统上安装。

# curl -LO https://github.com/Peltoche/lsd/releases/download/0.21.0/lsd_0.21.0_amd64.deb
# dpkg -i lsd_0.21.0_amd64.deb

78f4de766a2700dc7cd780fa197c8f29120453.jpg

二、broot

broot[3]也是一个基于 Rust 语言编写的 ls 命令替代品。相比 lsd 来说,它是一种查看和导航目录树的新方法,也可以理解为 broot 就是终端里的文件管理器。

broot 的特征:

  • 获得一个目录的概览、甚至是一个大目录
  • 找到一个目录然后 cd
  • 搜索时永远不会丢失文件层次的结构
  • 操作文件、管理文件、预览文件
  • 将标准或个人快捷方式应用于文件
  •  排序看看占用空间
  • 检查 Git 状态

broot 的使用:

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

# br -sdph

  • -s:显示文件大小
  • -d:显示文件时间
  • -p:显示文件权限
  • -h:显示隐藏文件

c486f6e22d211ac59cb860a80d3129ddb71820.jpg

从上述结果可以看出,broot 默认是以树状结构展开子目录,在该界面中,可以完成搜索(输入关键词)、复制(cp <复制后的文件名>)、删除 rm、更改文件名(mv <新文件名>)、退出 q基本文件操作。

三、zoxide

zoxide[5]是 cd 命令的替代品,主要用来切换用户当前工作目录,相比 cd 命令来说,zoxide 更智能些,它会记住您最常使用的目录,因此您只需按几下键即可“跳转”到指定的目录。

zoxide 可以在 Linux、macOS、Windows、BSD、Android 等操作系统上运行,用法与 cd 一样。

# zoxide /etc

如果您经常用 zoxide 进入 /etc 目录,您可以只写路径的一部分,从而将自动找到您经常使用的匹配项,只需输入命令:z e,就会自动将e匹配为 /etc,从而进入该目录中。

# z e

四、fzf

fzf[6]是一个通用的交互式命令行模糊查找器,便捷、无依赖、速度极快可用于任何列表、文件、历史命令、进程、主机名、书签、git 提交等。可以在 Debian 9+、Ubuntu 19.10+、Fedora、Arch Linux、FreeBSD、OpenBSD、openSUSE 等多种 Linux 发行版中安装。

# curl -LO http://cn.archive.ubuntu.com/ubuntu/pool/universe/f/fzf/fzf_0.24.3-1_amd64.deb
# dpkg -i fzf_0.24.3-1_amd64.deb

使用 fzf 可以结合 find 的替代品 fd[7]工具,关于 fd 这里不详细介绍了!

如果使用模糊查找,找出包含 debug 的文件名,可执行如下命令后,输入debug即可。

# find . -type f | fzf

628a20c02b46f27f5d7137a31fe5f6ee536ae1.jpg

五、ripgrep (rg)

ripgrep (rg)[8]是 grep 命令的替代品,它是一种面向行的搜索工具,递归地在当前目录中搜索正则表达式模式,支持在 Windows、Linux 和 macOS 上安装。

29193ae19a9942687eb213e591074d11d036a9.jpg

271db3e4071801944b87373b0e0ce6a132e5fa.jpg

ripgrep GitHub 存储库也对相同文件、单个大文件通过 ripgrep、git grep、ugrep、The Silver Searcher、ack、GNU grep 的方式做了鲜明的基准测试对比。从时间上来看 ripgrep 搜索时间相比是最快的。

除此之外,ripgrep 默认过滤、更少的错误、Unicode 支持、带有行号和搜索词高亮。

c55a9ec5514ab0363eb323bbf9185c5add4f4a.jpg

# apt install ripgrep

ripgrep 跟 grep 用法类似,比如:我要搜索所有内容包含字符串 yum 的 sh 文件,可执行如下命令:

# rg yum *.sh
9:cd /etc/yum.repos.d/
22:yum clean all
23:yum makecache
25:echo "本地yum仓库已经创建完成!"

除 grep、ripgrep 之外,还有 ack、ag[9]关于 ack 和 ag 这里不详细介绍了

六、procs

procs[10]是基于 Rust 语言编写的一个 ps 命令的替代品,它支持彩色高亮、多栏关键词搜索等特征的显示进程相关信息,可在 Linux、macOS、Windows 操作系统上进行安装。

f17457211e8df3ba923134037d5f71ac66d31f.jpg

procs 的安装:

Arch Linux

# sudo pacman -S procs

Fedora

# sudo dnf install procs

# sudo rpm -i https://github.com/dalance/procs/releases/download/v0.12.1/procs-0.12.1-1.x86_64.rpm

使用 procs 可执行如下命令,将显示所有进程的信息。

# procs

使用非数字 / 关键字进行搜索,添加任何关键字作为参数选项,默认情况下将会自动匹配 USER 到 COMMAND 中,添加与非数字关键字匹配的列,nonnumeric_search可以在配置文件中使用选项。

使用数字作为关键字进行搜索,默认匹配PID,默认情况下,数值被视为完全匹配,非数值被视为部分匹配,添加与数字关键字匹配的列,numeric_search可以在配置文件中使用选项。

如有一些关键字,可通过命令行选项指定关键字之间的逻辑运算。

  • --and:显示与所有关键字匹配的进程
  • --or:显示与任何关键字匹配的进程
  • --nand:除非这些过程与所有关键字匹配,否则将显示这些过程
  • --nor:除非与任何关键字匹配,否则将显示进程

七、diff-so-fancy

diff-so-fancy[11]是 git diff 的替代品,它是基于 node 实现的一款命令行工具,可以为您的终端呈现漂亮的差异,有助于提高代码质量并帮助更快发现缺陷。

d62383a908c4a8fbc4a4843476a9491965a45f.jpg

diff-so-fancy 的安装:

# npm install -g diff-so-fancy

diff-so-fancy 的使用:

直接可以在命令行调用

# git diff --color | diff-so-fancy

通过上述方式使用 diff-so-fancy 虽简单,但会把所有结果全部输出,并没显得差异化。我们可以通过设置 pager 对结果进行分页配置 git 以 diff-so-fancy 用于所有差异输出:

# git config --global core.pager " diff-so-fancy | less --tabs=4 -RFX "  
# git config --global interactive.diffFilter " diff-so-fancy --patch "

将 diff-so-fancy 配置为 Git 的默认 diff 工具就可以了,每次执行 git diff,就会输出它的执行结果。

八、delta

delta[12]是用于 git、diff 和 grep 输出的语法高亮分页器,它允许对 diff 的布局和样式进行大量的更改。

c9a303718d1d924a0f637081cf48db238dff25.jpg

delta 的特征:

  • 使用颜色主题突出显示语言的语法
  • 语法高亮从 rg、git grep、grep 等的 grep 输出
  • 带换行的并排视图
  • 支持显示行号
  • 支持合并冲突显示
  • 支持 Git 的 --color-moved 功能
  • n 和 N 键绑定在大差异中的文件之间移动
  • 代码可以直接从差异中复制

delta 的安装:

delta 支持在 Arch Linux、Fedora、FreeBSD、OpenSUSE、Debian / Ubuntu、Windows 等多种操作系统上安装,具体可参考 delta[13] 用户手册的安装部分。

九、mcfly

Mcfly[14] 是ctrl+r的替代品,主要用来搜索 Shell 操作记录。

459b686387e368bdc20392c24d4f1d21c269c4.jpg

mcfly 的特征:

  • 绑定ctrl+r以启动全屏反向历史搜索
  • 基于 Rust 编写,快速、安全
  • 搜索时键入%以匹配任意数量的字符
  • 维护正常 Shell 历史文件,以便可随时停止使用 McFly
  • 支持从 McFly 数据库和 Shell 历史文件中清除任何历史项目的操作

十、choose

choose[15] 是 cut[16]命令的替代品,用来显示行中的指定部分,删除文件中指定字段。cut 经常用来显示文件的内容,类似于 type 命令。

1855f8e90f30284cd64456716b54a6362bd3c5.jpg

choose 的特征:

  • 简洁字段、语法简单、类似于 Python 的列表切片
  • 负索引从行尾开始
  • 可选的开始 / 结束索引
  • 对于足够长的输入,略快于cut,远快于awk
  • 使用 Rust 的正则表达式语法的正则表达式字段分隔符

cut 的案例写法:

# cat 2022.txt | cut -d " " -f 1
or
# cut -d " " -f 1 2022.txt

choose 的案例写法:

# cat 2022.txt | choose 1
or
# choose 1 -i 2022.txt

十一、httpie

httpie[17]是 curl 的替代品,一个命令行 HTTP 客户端。httpie 的目标是使 CLI 与 Web 服务的交互尽可能的人性化,用于测试、调试以及通常与 API 和 HTTP 服务器交互,允许 http 和 https 命令创建和发送任意 HTTP 请求,从而使用简单的语法,并能够提供格式化和彩色输出。

81dd664179702ec1224258acff7787a4cbca13.jpg

curl  PUT 请求案例写法:

# curl -X PUT -d hello=world example.com

httpie PUT 请求案例写法:

# http PUT example.com hello=world

自定义 HTTP 方法、HTTP 标头和 JSON 数据:

# http PUT pie.dev/put X-API-Token:123 name=John

在不使用离线模式发送的情况下构建和打印请求:

# http --offline pie.dev/post hello=offline

十二、curlie

curlie[18]跟 httpie 是同类项目,curlie 增加了 httpie 的易用性,而不影响它的特性和性能,所有 curl 选项的语法和输出格式都来自 httpie,如果您喜欢 httpie 的界面,但不喜欢 curl 的特性,那 curlie 是最佳的选择。

318a8e806fa6fcaa4d3194f04705b6b33bb9d5.jpg

curlie 与 httpie 的区别:

  • curlie 像 curl,但不像 httpie,文件头是写在 stderr,而不是写在 stdout;
  • 输出没缓冲,所有格式化均动态完成,可轻松调试流数据;
  • 使用 curl 选项打印执行的 curl 命令;

curlie 的语法:

# curlie [CURL_OPTIONS...] [METHOD] URL [ITEM [ITEM]]

curlie 的简单获取:

# curlie httpbin.org/headers

自定义方法、标头和 JSON 数据:

# curlie -v PUT httpbin.org/status/201 X-API-Token:123 name=John

十三、xh

xh[19]是一个用于发送 HTTP 请求的友好且快速的工具,相比 httpie 来说,主要是提高了性能、可作为单个静态链接的二进制文件,易于安装、支持 HTTP / 2、使用 curl 标志内置对 curl 命令的转换、简短的帮助信息可通过备忘单样式进行输出。

d5d2865552769da92978022bca809717756749.gif

xh 的语法:

# xh [OPTIONS] <[METHOD] URL> [--] [REQUEST_ITEM]...

xh 的例子:

# 发送 GET 请求
xh httpbin.org/json
# 发送一个 POST 请求,请求体{"name": "ahmed", "age": 24}
xh httpbin.org/post name=ahmed age:=24
# 发送一个 querystring id=5 & sort=true 的 GET 请求
xh get httpbin.org/json id==5 sort==true
# 发送一个 GET 请求,并包含一个名为 x-api-key 的头,值为:66666
xh get httpbin.org/json x-api-key:66666
# 发送一个 PUT 请求,并将结果管道到 less
xh put httpbin.org/put id:=49 age:=24 | less
# 下载并保存到 test.json
xh -d httpbin.org/json -o test.json
# 请求与自定义用户代理
xh httpbin.org/get user-agent:foobar

十四、dog

dog[20]是一个命令行开源 DNS 客户端,dig 命令的替代品,有丰富多彩的输出,理解命令行参数语法,支持 UDP、TCP、DNS-over-TLS 和 DNS-over-HTTPS 协议的网络传输,并且可以发出 DNS 查询。

dog 可以在 Windows、MacOS 和 Linux 操作系统上运行,支持 16 种记录类型,包括:A、AAAA、CAA、CNAME、HINFO、LOC、MX、NAPTR、NS、OPT、PTR、SOA、SRV、SSHFP、TLSA 和 TXT。

dog 的例子:

# 使用默认设置查询域
dog example.net
# 查看 MX 记录
dog example.net MX
# 使用特定的命名服务器
dog example.net MX @IP地址 x.x.x.x
# 使用 TCP 而不是 UDP
dog example.net MX @IP地址 x.x.x.x -T

更多关于 dog 的安装、查询选项、发送选项、协议选项、输出选项可参考 dog 文档。

c38b40f1146e3090f2878550afe3711ed962f9.jpg


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK