一些现代化的linux命令
本文主要介绍一些现代化的linux基础命令。对比传统的命令,它们在实现了原有功能的基础上或多或少有一些不同于传统命令的特性。
文件目录
文件内容查看
cat
命令的现代化实现bat
命令。bat
命令在cat
命令的基础上加入了行号显示、代码高亮和Git集成。
文件查找
find
命令的现代化实现fd
命令。fd
命令并不是为了取代传统的find
命令,fd
命令主要是实现了find
大多数常用的用法,并不具有find
命令所有强大的功能,但是通常fd
命令的速度要快于find
命令。
fd
命令内部使用正则搜索,而fzf
项目提供了模糊搜索的功能,可以将fd
和fzf
组合使用。
文本内容搜索
grep
命令的现代化实现ack
命令。ack
命令的速度也通常快于grep
命令,基于ack
命令又派生了ag
命令。grep
命令和ack
命令的搜索方式不同,grep
只会在指定路径的所有文件上搜索内容,而ack
则采取更加智能的搜索方式。ripgrep
的rg
命令则结合了grep
和ack
,能够自动选择最佳搜索策略。目前从检索速度上来看,ripgrep
的性能最强,其次是silversearcher-ag
,最后是grep
。具体可以参考巧用这几种文本检索工具,节省80%的时间 。
目录内容列举
ls
命令的现代化实现exa
命令。exa
命令的默认设置可能看上去比ls
命令更加美观,但是在编写脚本时,还是应该使用更加通用的ls
命令,以避免不必要的麻烦。具体参考exa:一个 ls 命令的现代替代品 。
exa
项目作者由于没有精力维护项目,现在推荐使用社区分支eza
此外,还有类似的lsd
项目。exa
、eza
和lsd
都是基于Rust
实现。
目录路径切换
cd
命令的现代化实现zoxide
命令。zoxide
命令是一个更加智能的命令,受到了autojump
的启示,能够记录目录切换的历史并模糊匹配历史记录的路径。
终端文件管理器
对于前面目录内容列举的cli
命令行界面(Command Line Interface)工具,其实还可以考虑使用tui
终端用户界面(Terminal User Interface)工具。以下是几个基于Rust
实现的推荐项目
broot
:broot
是一个用Rust
编写的终端文件管理器,基于非阻塞异步I/O。它集成了ls
、tree
、find
、grep
、du
、fzf
等工具的常用功能,在一个TUI界面里完成上述各种工作。joshuto
:是一个类似ranger
的终端文件管理器,速度更快,但是需要手动配置才能使用预览文本和图片的功能。yazi
:yazi
是一个用Rust编写的终端文件管理器,基于非阻塞异步I/O。它旨在提供一个高效、用户友好、可定制的文件管理体验。在大部分终端中支持预览文本和图片,资源占用会比joshuto
更高。
关于终端文件管理器的选择可以参考这里的discussions ,根据实际需求选择。
系统管理
进程管理监控
top
命令的现代化实现有很多,这里主要介绍htop
命令,更多内容可以参考关于 top 工具的 6 个替代方案 。
htop
命令通常相对top
命令更易于使用,可以很方便地对进程进行过滤和排序,在必要的时候杀死对应的进程。
ps
命令的现代化实现procs
命令。procs
命令也是基于Rust
实现。
磁盘空间管理
df
命令的现代化实现duf
命令。duf
命令提供了一个所有挂载设备的概览。
目录空间管理
du
命令的现代化实现ncdu
命令。ncdu
命令相比du
命令更加直观易用,du
命令实际上不是一个很直观的命令,通常du
命令需要配合多个参数使用才能得到直观的信息。此外,ncdu
命令提供的是一个可交互的界面,可以进行排序以及交互式地删除目录。
截止2024年,
ncdu
的github仓库已经很久没有更新,可以考虑基于Rust
实现的dust
项目。但是dust
目前没有类似于ncdu
的交互式功能。另外一个值得关注的项目是使用go
语言实现的gdu
,提供和ncdu
类似的界面和功能,并且由于使用并行处理,速度可能比ncdu
更快。
网络管理
主机网络管理工具
net-tools
工具的现代化替代iproute2
工具。net-tools
工具中有几个很知名的命令,例如ifconfig
命令。
实际上,自2001年起,linux社区已经停止了对net-tools
的维护,而iproute2
旨在取代net-tools
,并提供了一些新功能。一些linux发行版已经停止支持net-tools
,只支持iproute2
,例如Archlinux
的livecd中就默认使用iproute2
而不是net-tools
。
虽然net-tools
是一个比较古老的命令,但是net-tools
目前仍在广泛使用,因此net-tools
还是值得linux系统管理员学习的。
网络请求工具
curl
和wget
的现代化实现httpie
工具。此外还有curlie
项目,curlie
集成了curl
的强大功能与httpie
的易用性。
与
curlie
类似的还有xh
项目。
httpie
基于Python
实现,curlie
基于Go
实现,xh
基于Rust
实现。
DNS查询工具
nslookup
工具的现代化实现dig
工具,而dig
工具又有其替代实现dog
项目。dog
是一款简单易用的命令行工具,具有丰富多彩的输出,支持DNS-over-TLS
和DNS-over-HTTPS
协议。
网络安全工具
netcat
工具的现代化实现ncat
和socat
工具。ncat
是netcat
的现代版本,而socat
是netcat
的现代化N倍加强版,不仅支持ncat
和netcat
的所有功能,还支持更多的协议和连接方式等,比ncat
更强大、更复杂。
远程文件传输工具
scp
命令的现代化替代sftp
命令或rsync
命令。scp
命令属于OpenSSH项目的一部分,它被认为已经过时,不灵活且不容易修复。推荐使用sftp
命令或rsync
命令进行文件传输。但是,有一定的用户群体习惯使用scp
命令,这里提供了一篇过渡参考scp 用户的 rsync 迁移指南 。
参考资料
- 标题: 一些现代化的linux命令
- 作者: Entropy Tree
- 创建于 : 2023-07-24 21:15:50
- 更新于 : 2024-06-14 10:36:30
- 链接: https://www.entropy-tree.top/2023/07/24/modern-linux-commands/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。