一些现代化的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 进行许可。