[Linux环境]写脚本的语言怎么选

我记得当初学Linux的时候,学了一点bash的知识
不过后来没怎么用到,差不多忘光了,因为很少运维,都是写写代码,打打命令
bash不常用,经常学了就忘,看了看用bashmysql操作的时候,感觉这是什么语言,这么乱


这里我想向各位参考一下,写脚本的时候,针对不同的方向可以选择哪些脚本语言来开发? 比如说,

  1. 后台运维方面选bash还是python
  2. 系统安全 与 文件操作
  3. 网络安全 和网络管理
  4. 等等…
    ps: 我记得chez scheme支持写 Shell Scripts,不知道有没有人用过,不知道怎么样,可不可以选这个
    贴一下链接 Using Chez Scheme

你都不搞运维,估计学了,也是很快忘光。

我也想找个写脚本比较舒服的语言,目前没找到。

bash: 语法有点奇怪,常常因为少空格不生效,而且不报错,调试都靠试。

python: 库很多,但是不是函数式的,很多写法都变的复杂,而且补全不友好。

ruby: 还可以,唯一一点补全不大好。

elixir: 写起来很舒服,就是没有全局包管理,包都依赖具体项目,一般情况下不能写脚本。

lisp系: 括号太多,写脚本多大很多字

haskell: 目前在尝试的语言,写起来好看又舒服,但是要编译才跑的快。

果断Python,系统预装,语法简洁,啥库都有,快速干活

3 个赞

只是处理文本的话用perl会轻松不少。黑魔法写1line也很爽。

简单的工作可以用bash,但如果要处理复杂一点的工作bash看起来就很奇怪

python/ruby这种就看习惯了。用emacs的情况直接拿scratch写elisp也行,常用的操作写函数到init.el里就好。

上面提的haskell因为可以用runhaskell当shebang,所以也行,但因为语言本身的情况,处理非常简单问题,不如上面那些方便。但如果是那种几百行的小脚本到是区别不太大了。

是时候安利nix了,elixir那个依赖问题,可以用nix-shell的shebang(,最近看了一下elixir,那个mix的设计好像就是让你在project里用,不考虑到脚本这样的情况。我搞错了(安利大失败

从实用的角度讲:Python,别扯哪些没用的,能快速干完活才是王道

2 个赞

还没用过nix,nix-shell能当脚本语言用吗?

不能熟练阅读使用bash(shell)脚本,基本上等于还没有开始使用linux.

shell脚本与其说是一种编程语言,不如说是linux系统各个程序协同工作机制的一部分。

这也是linux与windows区别最大的地方。长期使用windows的用户,习惯于一个程序做一件事情,互相之间很少有需要互相配合的时候,ole算是微软的一种尝试,但并没有成为windows应用的常态。

而linux则刚好相反(这里不包含图形界面的应用),每个程序只需要专注与自己的功能,然后通过shell, pipe, stdin/stdout/stderr env等机制,互相配合完成复杂的任务。

2 个赞

不是用nix做脚本语言,每个脚本头有个#!来指示解释器,这个叫shebang,nix-shell做shebang可以处理这个脚本的运行环境的依赖。脚本还是其它语言,只是可以把依赖隔离开

我是针对你上面说的elixir那条说的

推荐 REXX,三十分钟就能学会,语法简单,和命令行程序交互方便。再复杂一点我就用 chez 了。文本处理就用 snobol。

就算只用标准的 shell 脚本,我也不会用 bash,ksh 才是最好的 shell script 语言。推荐 mksh。

1 个赞

参考了下大家的意见,我觉得简单点的就用bash好了,
复杂一点,涉及到网络,大型脚本的还是用Python吧,第三方库比较多
没人用chez写脚本有点遗憾

!!!
你能给我这个REXXksh的教程地址吗,这些太冷门了
你用过chez写脚本??不知道手感如何

https://regina-rexx.sourceforge.io/

ksh 的教学很常见啊。比如某 Orelly 就有书。而且 ksh 和 bash 都兼容 Bourne shell

用 scheme 写脚本参照 https://scsh.net/

bash 和 python 都用,但更多的时候是在 org-mode 里写 source block ,用什么语言其实不太在意

单纯说脚本的话,我是用bash结合python的,字符串和系统信息处理主要用bash,数据后处理用python,以前为了追求更好的汉字支持(比如中文变量)曾经用过ksh的一个版本。

python可以结合mpi和opencl,又有各种统计学和机器学习工具包,非常强悍。

追求速度的时候,会把对速度限制最大的部分用C++或fortran重写,偶尔用C++结合opencl。

我还是老老实实用python

这个Scsh的话IBM出过教程。

不清楚Chez怎么样,不过我觉得要用Scheme写脚本可以用Guile。Guile内置了正则匹配,JSON/XML处理,甚至还有LALR的parser generator,可以解析一些自定义格式(比如需要分析log),用起来比较方便。

需要跨平台使用的脚本,我使用Nodejs,因为在Windows下设置Python环境有多麻烦你懂的。

1 个赞

谢谢大佬指点 :grin:

现在项目一般都用python。

我的bash经验要比大多数程序员硬核,以前在柯达干时维护一个叫digital cinema的老项目,整个系统都是用bash 做胶水语言搭起来的,极其恶心。维护了一年多一点。让我对bash的语法的缺点有深刻的认识。

我现在维护bash的配置都是现用现查。所以别在bash学习上浪费太多时间,有这时间学python。

10 个赞