几个新一代命令行工具

简介: 几个新一代命令行工具

新一代命令行工具的特点是语法简单,符合直觉。他们大多使用 rust 或者 go 编写。

sd

sd 可以替代 sed。sd 是使用 rust 编写的,所以使用的正则引擎和你在 JS 和 Python 中熟悉的正则引擎是一致的,也就不需要各种奇奇怪怪的转义了。sd 还具有字符串模式,也就是关闭正则表达式,这也避免了一些转义的工作量。

安装

# 首先安装 rust,如果没有安装的话
~$ curl https://sh.rustup.rs -sSf |sh
~$ cargo install sd

使用

# 和 sed 的对比:
sd:sd before after
sed:sed s/before/after/g
# 字符串模式, -s 开启,可以看到括号就是括号
> echo 'lots((([]))) of special chars' | sd -s '((([])))' ''
lots of special chars
# 默认是正则模式
> echo 'lorem ipsum 23   ' | sd '\s+$' ''
lorem ipsum 23
# 使用正则分组
> echo 'cargo +nightly watch' | sd '(\w+)\s+\+(\w+)\s+(\w+)''cmd: $1, channel: $2, subcmd: $3'cmd:cargo,channel: nightly, subcmd: watch
# 替换文件,使用 -i
> sd 'window.fetch' 'fetch' -i http.js

fd

fd 可以用来替代 find。和 sed 一样,find 命令也使用了一些古老的正则语法,要查找含有某个字的文件,或者过滤某个类型的文件都要使用一些比较难以记忆的通配符。fd 命令则好了,没有什么复杂的,基本上按照直觉敲出来就对了。

安装

brew install fd  # homebrew/linuxbrew
或者
cargo install fd-find  # 首先需要安装 rust,如前文所述

使用

# 查找包含 name 的文件 
-> % find . -name "*hello*"
./courses/hello_world.go
./courses/chapter_01/hello_world.go
./courses/chapter_01/hello_world
./examples/01_hello_world.go
# 相比之下 fd 则简单多了
-> % fd hello 
courses/chapter_01/hello_world
courses/chapter_01/hello_world.go
courses/hello_world.go
examples/01_hello_world.go
# 查找 markdown 类型的文件
-> % find .-name "*.md"
./courses/chapter_01/chapter_1.md
./courses/chapter_1.md
-> % fd -e md
courses/chapter_01/chapter_1.md
courses/chapter_1.md
# 使用 exec,这是我对 find 命令最不满意的地方,结尾的分号实在费解
-> % find . -name "*.md" -exec wc -l {} \;
     114 ./courses/chapter_01/chapter_1.md
     114 ./courses/chapter_1.md
-> % fd -e md --exec wc -l {}
     114 courses/chapter_1.md
     114 courses/chapter_01/chapter_1.md

bat

bat 是个带了高亮和git集成版的 cat。虽说按照 Unix 哲学的话 cat|highlight 命令也能实现类似的功能,但是还是 bat 更省心一点,默认主题也更漂亮一点。640 (6).png

安装

brew install bat

使用

直接用就好了。。建议 aliascat=bat

sk 和 fzf

sk 和 fzf 是两个模糊搜索工具,分别使用 rust 和 go 编写,两个的功能比较接近,这里以我日常使用的 fzf 为例。

目录
相关文章
|
Docker Windows 容器
解决 windows:An attempt was made to access a socket in a way forbidden by its access permissions
解决 windows:An attempt was made to access a socket in a way forbidden by its access permissions
3863 1
解决 windows:An attempt was made to access a socket in a way forbidden by its access permissions
|
10月前
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
3590 70
Grafana Loki,轻量级日志系统
|
7月前
|
Docker 容器
在openEuler 22.03 LTS上安装Docker CE和Docker Compose
以上就是在openEuler 22.03 LTS上安装Docker CE和Docker Compose的过程。希望这个指南能帮助你顺利完成安装。
1605 12
|
调度 数据库 Python
python中APScheduler的使用详解(python3经典编程案例)
文章详细讲解了在Python中使用APScheduler来安排和执行定时任务的方法,包括不同调度器的配置与使用场景。
674 0
|
存储 Kubernetes 调度
云原生场景下高可用架构的最佳实践
云原生场景下高可用架构的最佳实践
139131 0
|
7天前
|
云安全 人工智能 自然语言处理
|
11天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
986 35
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
657 4
|
7天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
524 25