想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便
想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便
|
1
golang 大法好
|
|
2
我觉得写小工具可能还真是 https://github.com/geekan/MetaGPT 这个比较方便……
|
|
3
Java 这类最通用的跨操作系统的语言就可以。然后用 Native 语言给写个启动器来找到 JRE 后将相关参数传进去启动即可,Windows 下面我用汇编语言写了启动器,你可以选择用 Visual Studio 下的 C++来写这个启动器; macOS 下我就用那个 Swift 写了启动器。
其实只要你会用 native 语言来写这个启动器,那么各种编程语言都能制作成一个单独的 exe 文件。只不过一般人不会要求全部合并成一个 exe 文件,都是一个 exe 文件带很多 dll 或 jar 包等。 比如 Java 写的程序非要合并成一个 exe ,那么就可以将 JRE 、Jar 包作为资源文件放到启动器那个 exe 中,这样就变成了一个单独的 exe 程序。启动器启动后,将 JRE 、jar 包释放到临时目录运行就行了。 |
|
Trim21Jul 4, 2023
4
golang ,交叉编译很方便。
|
|
5
@H0H 你这个方法要是算简单的话那大部分语言都挺简单。。。小工具+好编译成二进制=go 或者 rust
|
|
jackmodJul 4, 2023
6
能够比较简单制造 exe 的话估计只有 golang 和 rust 了,不过 linux 下的 rust 需要使用 musl 达到 static
|
|
fbichijingJul 4, 2023
7
你提出的问题和描述似乎不太相同啊。
如果是 exe 的话不是基本上圈定 C, C++ 了吗?独立的可移植的 exe 文件。 如果是基于命令行进行操作的工具,那我觉得使用 python 写命令行是十分舒服的。 写成一个 package ,自定义喜欢的全局命令,只要存在 python 环境自己安装一下就能全局使用了。现在的服务器基本上都预装有 python ,所以就像是写一次可以各个地方运行了。 因为平时经常有这需求,而这种全局命令的文件格式又十分固定。所以我写成一个十分简单的 package 放在 pypi 上,方便自己使用......用来方便自己构建全局命令。 ------ 以下只是我自己平时的使用方式,因为自己写的这个 package 很简单,只是作为举例之用。 pip install package-gen 然后提供了一个全局命令:pk-gen 比如: pk-gen mytest 就生成一个 package 的模板,往里面定义自己想要的全局命令,然后将实现代码敲出来就行了。比起去弄 gui ,全局命令这方面写起来就很舒服。 |
|
Trim21Jul 4, 2023
8
|
|
licsberJul 4, 2023
9
我的设备同时有 linux bsd mac win 所以我的小工具包已经成 python 改成 golang 了
非常方便改下 GOOS 就能换系统 改 ARCH 就能换架构 目前工具类型涵盖了文件元信息计算、文件夹统计、去重、获取微信 token 、快捷打印、检测电脑是否摸鱼(空闲微信提醒)等 |
|
kljsandjbJul 4, 2023 via iPhone
11
Rust 挺合适的
|
|
u823tgJul 4, 2023
12
为啥一定要 exe 之类二进制文件呢, 小工具还是命令行不是脚本语言最好用吗,随时更改的。
|
|
14
生态上 go rust, 很多 tui 以及其他 cli 相关的库, c/c++ 生态不用说, 但是和方便不搭边
产物体积小且快, rust zig 方便且跨平台, go rust c# zig, 后面两个生态差点, 综上 go rust java graalvm 应该也可以, 没用过 |
|
lhbcJul 4, 2023 via Android
15
golang 最佳
别用 cgo |
|
wxf666Jul 4, 2023
16
你给点工具的应用场景出来呗?
比如,音视频处理?文本处理?结构数据处理?…… |
|
17
c sharp(aot 编译)
javascript/typescript(deno 或者 pkg) dart 类似 ts 的语法 |
|
MrKrabsJul 4, 2023
18
zig rust swift
|
|
crabJul 4, 2023
19
bat
|
|
zsj1029Jul 4, 2023 via iPhone
20
Dart 发布二进制自带虚拟机,类似 Java
|
|
21
只有 C ,其他都不方便。
https://justine.lol/ape.html https://github.com/jart/cosmopolitan 基于 cosmopolitan 编译的 C 能做到二进制跨平台运行 |
|
fyqJul 4, 2023
22
那显然是 C
|
|
24
第一次见到写小工具用 Java 的,那不得打一个 jre 放包里,小而美?
|
|
snwJul 4, 2023 via Android
25
VB6 ?
|
|
placeholderJul 4, 2023
26
那你还不如用 nodejs 写 cli 呢
|
|
yazinnnnJul 4, 2023
27
java 写个 hello world, aot 之后都有 11M, 咋做小工具哦...
|
|
cozofJul 4, 2023 via iPhone
28
golang 啊。你看我不费吹灰之力就把 go 写的小工具打包了各平台的几十个可执行文件。 https://github.com/qcozof/portsman/releases
|
|
LeegoYihJul 4, 2023
29
考虑到逆向的话,还是别选解释型语言和 Java 了
|
|
xgdgscJul 4, 2023
30
体积小 rust go 最方便。不嫌体积大(500M),从简洁的动态脚本写起,Julia 用 https://comonicon.org/stable/ https://julialang.github.io/PackageCompiler.jl/dev/ 也可以, 参考 https://github.com/ninjaaron/administrative-scripting-with-julia
|
|
lsk569937453Jul 4, 2023
31
写命令行还得是 golang/rust,不接受反驳!
|
|
gimpJul 4, 2023
34
首推 Golang ,其次 Rust
|
|
a33291Jul 4, 2023
35
推荐 rust 或者 go,主要是交叉编译跨平台特性,cli 比较合适
.net 和 java 就别掺和了,丢脸 |
|
tool2dJul 4, 2023
36
看程序的复杂程度了,我是觉得 C 好,因为你倒退个 10 ~ 30 年,github 上的代码大部分核心算法,都是用 C 写的,随时可以抄作业。
如果程序很简单,那 nodejs 写写也可以,任何语言都可以。 |
|
a33291Jul 4, 2023
38
|
|
liuliuliuliuJul 4, 2023
39
@a33291 纯请教,rust 的 native 水平是啥意思啊?
我前两天用 C#写了一个跨平台原生编译 aot 的 ui https://www.v2ex.com/t/952603 命令行当然也没问题 |
|
a33291Jul 4, 2023
40
@nikenidage1 #39 抱歉我可能没表达清楚,每个语言都有他的特色和优势
是这样,就是.net 和 java 都带有 runtime,c/c++/rust 不带,编译就是针对特定平台的产物(win 就是 dll 或 exe),他们 aot 之后的确也不需要安装环境(但是本质上还是内嵌了一个 runtime),通过裁剪等可以减少 aot 的大小达到性能和大小的平衡(也见过使用极限手段优化 aot 大小的,但是并不是开箱即用),但是总是需要付出更多努力的 |
|
zysuperJul 4, 2023
41
golang
|
|
c2constJul 4, 2023
42
小工具,C/C++最舒服、win 平台还可以 C#。
---------------------------------------- go 、java 、python 、js 也可以。 但是 go 写小工具可能误报毒,java 、python 、js 都有打包或者 AOT 编译到 exe ,但体积大。 选个熟悉的语言写就行,别想那么多。 |
|
liuliuliuliuJul 4, 2023
43
|
|
mscorlibJul 4, 2023
44
跨平台:
首选 golang 次选 rust 然后是 java 、.net 如果仅 windows 的话首选 C#,winform |
|
xiangyuecnJul 4, 2023
45
“主要是基于命令行上进行操作的工具”,干脆直接写命令行脚本得了😂
参考我的一个 Java 开源库,也是命令行里面调用测试的,文件直接在根目录裸奔,给 windows 写了个.bat ,linux macos 写了个.sh ,脚本写法基本上都是通用的 高性能的省市区坐标数据、边界数据查询工具,Java 开源程序、内置 http 查询接口,内存占用低( 1 秒可查 1 万个以上坐标对应的城市信息): https://github.com/xiangyuecn/AreaCity-Query-Geometry |
|
zjsxwcJul 4, 2023
46
虽然但是,既然 java jre 加个起动器都可以,
那么,javascript node 加个起动器也可以。 |
|
47
这种讨论毫无意义啊…
用最熟悉的语言搞就完事了… 我们这一堆运维脚本是 js 的,挂 node 跑,原因无他,写脚本的大佬以前是个前端 js 大佬… |
|
c3de3f21Jul 4, 2023
50
就用 C 写最好
|
|
BingoXuanJul 4, 2023
51
python ,用 py2app 或者 pyinstaller 打包,配合 dearpygui 这类 imgui 可以很快出效果
|
|
billzhuangJul 4, 2023
52
golang 的 exe 容易被 windows defender 报毒
|
|
53
上来就整 Java, 我上着班呢, 差点笑死
|
|
GiantHardJul 4, 2023
54
用最熟悉顺手的编程语言就好了,先把工具写出来,再考虑优化。
|
|
58
c#写起来很舒服啊。也能发布成单 exe 文件。跨平台等等。
|
|
shijingshijingJul 4, 2023
59
Java 可拉倒吧,还得装个 JRE ,命令行+小工具+跨平台,再考虑到开发难度和速度,Python 和 Qt 是最合适的,Python 有一键打包成 exe 的工具。
|
|
idealhsJul 4, 2023
61
如果只是个 CLI 程序,anything except JAVA ,但是我推荐用 python 来节约你的生命
如果一定需要打包二进制,C ,C++, C#, GO, RUST |
|
Tanix2Jul 4, 2023 via iPhone
62
rust 写命令行工具方便
|
|
fengjianxinghunJul 4, 2023
63
java c# 脚本仔就别来趟 native 浑水了,写点 web 不挺好的么?
|
|
xqdoo00oJul 4, 2023
64
毫无疑问,go ,配个环境变量就能交叉编译的快感,其他还要配置工具链的语言没法比。
次选 rust 。 说 java 和 c#的是在扯淡,谁写个小工具还会带个 jre 和.net 跑,用 aot 更是麻烦。 |
|
TinkJul 4, 2023
65
rust 和 go 吧
|
|
virusdefenderJul 4, 2023
67
首选 go ,还有一个上面没人说过,我也没用过的 kotlin native 也许可以
|
|
2NUTJul 4, 2023
68
必然是 c
|
|
wonderfulcxmJul 4, 2023
70
人家没有说要移植,要跨平台,只要容易转可执行文件,楼上某些哥们的戏是不是有点多?😂
|
|
yanmu6626Jul 4, 2023
71
Windows 上开发 rust ,跨平台方便吗?
|
|
imicksoftJul 4, 2023
72
windows 推荐 aardio ,真的方便
|
|
cutiechiJul 4, 2023
73
c 、c++、rust 、go
|
|
dobeleeJul 4, 2023 via iPhone
74
c++ c# go
|
|
qistchanJul 4, 2023
75
VB😂
|
|
lujiaxingJul 4, 2023
76
@musi 那多简单. 直接用 WinRAR 打一个 Self-Extract Package 加几个 post extract command 就可以了 (
|
|
77
@fengjianxinghun 怎么就是蹚浑水了?? .NET 做不了 AOT 编译是咋地?
|
|
mohumohuJul 4, 2023
78
go 吧,rust 跨平台静态编译没这么方便
|
|
ql562482472Jul 4, 2023
79
我目前也有一个需求要做成原生的 cli 工具
我用 java 的 org.graalvm.buildtools.native-maven-plugin 这个插件 AOT 的,还行其实,但是包会变得巨大,大小基本在所有依赖包的总和的水准上了。 同时 JNI 的调用还是会有问题。 另一个就是打包时间稍长了些。 |
|
ggvokingJul 4, 2023
81
首选 golang ,go 写起来真的舒服,交叉编译也方便。再也不想用 c#、python 写了。
次选 rust 。 |
|
flyqieJul 4, 2023 via Android
82
python 或者 go 吧。
看你自己,个人推荐用 go 。 |
|
83
那必须是 C#吧
|
|
howfreeJul 4, 2023
85
java 使用 GraalVM 可以生产不同操作系统的可执行文件
|
|
hatsuyukiJul 4, 2023
86
首推 Rust
|
|
FightPigJul 4, 2023
87
我用 go 和 rust 都写过,整体 go 的话写起来轻松些,rust 不熟的话写起来太麻烦了
|
|
seakingiiJul 4, 2023
89
windows 下推荐 c#,原因是 c#语法最方便
linux 或者跨平台推荐 go,库很多,编译方便 |
|
NoOneNoBodyJul 4, 2023
90
写了几十个 python 脚本,自用没有分发需求,反而部分有不时改动一下,所以都没编译
有些传参只是文件路径的,直接在 total commander 工具栏加个按钮就当 GUI 用了 |
|
91
还是那句话,作为用户巴不得你 Rust 写,Go 的 CLI 几乎都是透露着一种未完善的气息。
Rust 直接调用 Clap 解参数,log 日志,anyhow 错误处理,serde 解配置文件,toml_edit 还能基于结构增量修改配置,要 REPL 还能用 nushell 同款基础库 rustyline 。 能给用户带来非常统一完善的体验。而不是有些 Go CLI 上来一个 panic 给我整乐了。 写小工具 Rust 还具有最快的启动速度,最小的二进制体积,上个 O3 LTO 比 Go 小到不知道多少倍。 |
|
jlkm2010Jul 4, 2023
92
cj
|
|
lerryJul 4, 2023
93
go ,编译以后单文件,不需要什么特别配置,很简单
|
|
poporangeJul 4, 2023
94
python
|
|
brookegasJul 4, 2023
95
golang
交叉编译,直接用 mac 上瞬间编译出 linux 、mac 、windows 下的二进制文件 编译速度快到飞起 |
|
cat9lifeJul 4, 2023
96
当然是 go 最方便,没啥可争辩的
|
|
raptorJul 4, 2023
97
果然第一个就是 GO
|
|
99
上面说用 java 写的也太搞了,虽然我也是干 java 的,但写工具这种活真没 java 啥事。没接触 go 之前我都是用 python ,接触了 go 之后全都是用 go 写,跨平台编译太香了。
|
|
AV1Jul 4, 2023
100
如果是命令行小工具,用 go 就行,dart 也可以。
退两步,那就 python 或者 node 。 |