今晚肝代码,一个新的开源项目,新鲜出炉,给大家介绍一下。
首先放上代码仓库: https://github.com/daqing/goargs
这个项目是做什么的呢?
就是取代一个 Unix 命令:xargs
所以我的项目就叫:goargs
,因为是用 go 写的
goargs
的用法,类似于 xargs
那么,goargs 有什么优势呢?
就是支持复杂的参数组合,举个例子:
$ echo foo bar | goargs echo :2 :1
这样会输出:bar foo
这样你可能大体理解了 goargs
的用法
再举一个例子:
假设当前目录有 2 个 go 文件:
a.go
b.go
那么,如何批量把这两个文件,重命名为
a.go.py
b.go.py
呢?
使用 goargs 就可以做到:
看命令:
ls *.go | goargs mv :1 :1.py
所以 goargs
的设计是非常灵活的,可以帮助你实现非常复杂的批处理场景,具体用法等你来挖掘。
感谢阅读此贴~~
1
kzzhr 123 天前 via Android
感觉你想做的是 goawk ?
|
3
silvernoo 123 天前
看上去不错,xargs 太恼人了
|
4
mritd 123 天前 via iPhone 5
跑个题, 其实有很多 unix 的命令替代项目, 不过用到最后还是要回到或者说学习原始工具, 核心问题点就是大多数情况下陌生环境可能无法安装或者说默认带的就是原始工具, 着急干活时候很难有动力折腾一圈安装特定的替代方案
|
5
abersheeran 122 天前
@mritd #4 是的,所以感觉提供各个架构和平台现成的二进制文件会比较好
|
6
Imr 122 天前
感觉对运维来说不是很有用,bash shell 常用命令也不用很麻烦就可以实现这些功能,到头来繁琐的下载命令反而是最大的障碍。shell 里弱势是结构化数据处理,弄个类似 jq 、yq 的工具更有价值
|
7
daqing OP |
8
daqing OP @abersheeran go 语言的代码,天然就是跨平台的,提供二进制文件没啥难度。
|
9
dhb233 122 天前
给的两个例子很迷惑,参数一点也不直观。。。
|
10
daqing OP @dhb233 对于 goargs 的输入,如果是字符串:"foo bar buzz word",那么 :1 就表示 foo, :2 表示 bar ,以此类推。
那么,在 goargs 调用命令之前,会把 :1, :2 这些符号,替换为真实的值,然后在调用替换后的命令。 |
11
abersheeran 122 天前
@daqing #7 最好用 GitHub action 编译完,别让用户还得在本地装个 go 才能用。我之前有写过一个 https://github.com/abersheeran/http2tcp/blob/master/.github/workflows/build.yaml
|
12
daqing OP @abersheeran 好的,感谢,我看看~~
|