先把一句话放在前面:脚本语言从来不是用来供奉的,是用来干活的。这几年我一边做运维一边写数据处理脚本,Bash Shell、Perl、Zsh、Python、R、PowerShell 这六门语言都真正上手用过,踩过不少坑,也被同事问过无数次同一个问题:到底先学哪个?我的答案一直是反过来的——先别急着问“哪门最强”,先问自己手里最常处理的“活儿”到底是什么。这篇文章就是我从实战角度做的总结,不讲高深理论,只讲每门语言适合什么场景、怎么快速入门、哪些坑能提前绕开。
1. 脚本语言全景图:先想清楚“我到底要干嘛”
1.1 语言没有高低,只有分工不同
很多人一上来就纠结哪门语言最强,这其实是最大的误区。脚本语言的定位从来不是“谁的算法更快”,而是“谁能让重复劳动更快被消灭”。Bash Shell 从1970年代末的 Bourne shell 一路演进到今天的 Linux 默认交互层,靠的是简洁的管道组合能力;Zsh 在 Bash 基础上把交互体验做到极致;Perl 靠正则表达式在文本处理领域打了几十年天下;Python 几乎成了“什么都能干”的代名词;R 在统计建模和学术图表领域拥有不可替代的地位;PowerShell 则是微软在 Windows 生态里重新定义的自动化底座。
它们之间不是竞争关系,而是分工关系。拿 Bash 去解析上万行 JSON 日志会写到怀疑人生,拿 R 去写部署脚本更是别扭到不行,工具和场景错配才是入门劝退的最大原因。我见过太多人学完一门语言后说“这玩意儿没什么用”,其实不是语言没用,是他拿扳手去拧螺丝刀该干的活。所以这篇总结的第一原则,就是先把自己的日常工作拆成场景,再看每个场景对应哪门语言。
1.2 六大门派的江湖定位
我习惯按“你在什么场景下会想起它”来给这些语言归类,而不是按语法难度。这个归类方式在给新人做技术选型时特别实用:
- Bash Shell:系统管理、文件批处理、服务启停、定时任务。凡是跟 Linux 服务器日常维护沾边的,它都绕不开,CI/CD 流水线里跑的也几乎全是 Bash 指令。
- Zsh:终端交互升级版。自动补全、历史命令建议、目录快速跳转、主题美化,配合 Oh My Zsh 插件框架,能让每天敲命令的效率明显提升。
- Perl:文本处理的老牌“瑞士军刀”。正则表达式是它的灵魂,单行命令就能搞定复杂的日志抽取和字段重排,至今在很多遗留系统和生物信息领域仍然活跃。
- Python:通用开发的万金油。爬虫、Web 服务、数据清洗、办公自动化、模型训练,几乎每个领域都有成熟第三方库兜底。
- R:统计分析和数据科学的专用阵地。ggplot2 的图形语法、tidyverse 的数据处理管道,加上 CRAN 上大量的统计模型包,让它成为学术图表和统计建模的首选。
- PowerShell:Windows 系统管理的现代底座。它以对象为处理单位,能直接操作 .NET 对象和 WMI/CIM 接口,也能跨 Windows、Linux、macOS 运行。
这个定位表看起来简单,但值得贴在工位旁边。每次犹豫该用哪门语言时,把当前任务丢进这张表里,方向基本就清晰了。
2. 六大主流脚本语言逐个拆解
2.1 Bash Shell:Linux 世界的“普通话”
Bash 在 Linux 生态里的地位,相当于普通话在交流中的地位。绝大多数服务器都预装了它,你在生产环境里写自动化脚本,完全不需要依赖额外的运行时。启动服务、配置环境变量、写 cron 定时任务、部署应用、检查日志,这些活无论用哪种工具链收尾,最后落到命令层还是 Bash。
Bash 的设计哲学是“一切皆文本”。每个命令只做好一件事,通过管道把输出交给下一个命令。我举一个非常典型的例子:统计 Nginx 访问日志里访问量最高的十个 IP。用 Bash 只需要一条命令:
grep "GET /" /var/log/nginx/access.log \ | awk '{print $1}' \ | sort | uniq -c | sort -rn | head -10没有循环、没有变量,4 个管道就把问题解决了。这就是 Bash 的魅力:它不强,但极高效率。第一次看这类命令的人可能会觉得像天书,但拆开看无非是“过滤、取列、排序、去重、再排序、取前十条”。把 Linux 基础命令练熟之后,这种组合写起来非常顺手。
但 Bash 的短板也很明显。语法比较古老,空白敏感,数组能力弱,整数运算支持很差,调试手段基本靠 echo。脚本一旦超过 200 行,维护成本会指数级上升。我自己踩过的经典坑是循环里忘记加done,报错信息和实际错误位置差十万八千里;还有一个是在变量名里用了-,Bash 直接把整个词当成了命令去执行。所以我的经验是:日常运维和部署脚本用 Bash 完全没问题,但一旦涉及复杂业务逻辑、多重判断、数据结构,就果断换 Python,别硬撑。
2.2 Zsh:让终端用起来“爽”
Zsh 对系统管理来说不是必需品,但对每天都在终端里泡着的人来说,它是幸福感的直接来源。Zsh 的自动补全能理解命令参数、文件路径、Git 分支,甚至能补全包管理器的子命令。它还有一个杀手级功能:历史命令建议。你敲到一半,它就把你以前敲过的完整命令自动补在灰字里,按一下右键就能直接用。
安装 Oh My Zsh 是大多数人的第一站,官方一条命令就能装:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"装完以后我建议优先配两个插件:zsh-autosuggestions负责历史建议,zsh-syntax-highlighting负责在命令行实时高亮语法错误。前者省时间,后者帮你一眼看出命令拼没拼对。配置在~/.zshrc里加一行:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)需要注意,Zsh 和 Bash 并不完全兼容。你自己写的脚本要在 Zsh 下跑,shebang 要写#!/bin/zsh;如果用户把 Zsh 设成了默认 shell,偶尔会遇到某些老脚本行为不一致的情况。我的建议是:交互层用 Zsh,脚本层还是按#!/bin/bash写,这样两者各取所长,互不干扰。另外提醒一句,别花太多时间折腾主题和美化,终端好看是加分项,但你的核心目标是解决问题的效率,不是每天换壁纸式地调提示符。
2.3 Perl:正则表达式的“扫地僧”
如果只允许我用一种语言处理文本,我大概率会选 Perl。它的正则表达式不是“库提供的能力”,而是直接内嵌在语法里的。在 Perl 里,条件判断可以写正则,替换可以直接当语句用,处理日志文本极其顺手。
一个场景:从访问日志里提取 IP 和时间戳,写成 Perl 脚本就是这样:
#!/usr/bin/perl use strict; use warnings; while (<>) { if (/^(\d+\.\d+\.\d+\.\d+)\s+\S+\s+\S+\s+\[([^\]]+)\]/) { print "$1\t$2\n"; } }但更常见的其实是用单行命令。运维现场没有时间写完整脚本,perl -ne三秒出结果:
perl -ne 'print "$1\n" if /^(\d+\.\d+\.\d+\.\d+)/' access.log这里的-n表示逐行读取,-e后面跟表达式,看着像加密符号,用熟了就知道这是文本处理效率最高的姿势之一。Perl 的模块生态也不差,cpanm安装第三方模块比裸cpan好用得多,我早期被cpan的交互式安装折腾得够呛,换成cpanm以后世界清净了。
Perl 最大的缺点,是语法自由度太高。十个人能写出十种不同风格的 Perl 代码,读别人的代码有时候像在读天书。项目里大面积用 Perl 维护成本很高,这可能是它在新项目里越来越少被选中的原因。但如果你是做数据处理、日志分析,或者需要处理大量历史系统里的 Perl 脚本,这一门语言依然值得下功夫。
2.4 Python:通用开发的“万金油”
Python 的定位就是“什么都能干”。它的语法接近伪代码,即使没学过编程的人也能读懂个大概。我经常在讲课时说,Python 是唯一能从菜鸟用到资深、从脚本用到生产系统的语言。同样是处理一个销售数据的 CSV,Python 的写法非常自然:
import pandas as pd df = pd.read_csv("sales.csv") df.groupby("region")["amount"].sum().to_csv("summary.csv")三行代码完成了数据读取、分组聚合、写出结果。Python 的生态广度是其他几门语言难以比的:网络请求有requests,数据分析有pandas,办公自动化有openpyxl,机器学习有scikit-learn,所有常见需求都有成熟解决方案。
Python 的缺点也需要注意。性能上它比编译型语言慢得多,但脚本任务通常不在这类瓶颈上;“包管理”则是新手最容易翻车的地方。系统自带的 Python 如果被直接安装各种包,用不了半年就会出现版本冲突、依赖地狱。我的习惯是每个项目都建独立的虚拟环境:
python -m venv venv source venv/bin/activate在 Windows 上安装 Python 时,第一件事就是在安装界面勾选Add Python to PATH,这一步能避免掉之后数不清的“pip 不是内部或外部命令”报错。入门阶段别追求面面俱到,把列表、字典、循环、函数、文件读写这五样练熟,就能解决大部分实际问题。
2.5 R:统计分析的“专业相机”
R 不是通用语言,它的优势极其聚焦:统计建模和图形可视化。在学术论文、生物信息、经济统计这些领域,R 几乎是事实标准。比如 α 多样性分析这类生态学指标计算,在 R 里有一整套成熟的包链;SARIMA 时间序列模型,也有现成的forecast包可以直接调用。换任何一门其他语言做同样的事,都会让你把大量时间花在造轮子而不是分析数据上。
R 的绘图能力在脚本语言里是断档领先的。ggplot2 的图层式语法非常直观:
library(ggplot2) ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + geom_point() + theme_minimal()做数据分析的人最好配合 RStudio 使用,它把编辑器、控制台、变量面板、绘图窗口集成在一起,体感和 Jupyter 类似,但更偏向统计工作流。R 的包安装比 Python 严格,很多包需要编译系统底层依赖。比如安装rgdal时报编译错误,真实原因往往是系统缺 GDAL 库,不是你的 R 配置有问题。遇到这种情况,先去装系统依赖,再回来装 R 包,顺序别搞反。
我给 R 用户的建议很简单:承认它是“专业相机”,别拿它当“手机”用。用 R 做统计分析很香,但拿它去写 Web 服务、处理并发任务,就会非常别扭。工具选对了,学习曲线才会显得平缓。
2.6 PowerShell:Windows 世界的“系统管理语言”
PowerShell 在 Windows 生态里的地位,越来越接近 Bash 在 Linux 生态里的地位。它并不是 cmd 的简单升级版,而是把 .NET 对象引入了命令行。在 Bash 里管道传递的是纯文本,在 PowerShell 里管道传递的是对象,后面的命令可以直接读取前面的属性。比如列出所有正在运行的服务:
Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName这条命令如果翻译成 Bash 风格的文本处理,会繁琐得多。PowerShell 的优势在于它能直接操作 Windows 的 WMI、注册表、事件日志,还能调用 .NET 类库做更底层的操作。系统管理员在 Windows 上做批量任务,无论是改配置、启停服务、批量创建 AD 用户,PowerShell 都是第一选择。
新手最容易撞到的坑是“禁止运行脚本”的报错。这其实是 PowerShell 默认的执行策略在保护系统:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser设置成RemoteSigned后,本地脚本可以正常执行,从网上下载的脚本则需要签名。如果你只是临时运行一个脚本,也可以绕过策略:
powershell -ExecutionPolicy Bypass -File my_script.ps1另外要区分两个版本:Windows 自带的是 Windows PowerShell 5.1,默认编码不是 UTF-8;而 PowerShell 7 是跨平台版本,支持 Windows、Linux、macOS,默认 UTF-8。日常开发建议直接用 PowerShell 7,在 Windows 上用winget install Microsoft.PowerShell就能安装。
3. 按场景选型:实战对照与速查表
3.1 系统运维与自动化场景
运维是我干得最多的活,也是脚本语言价值最集中的地方。如果你管理的是 Linux 服务器,Bash 往往是第一选项。备份数据、清理日志、批量同步配置、写 cron 定时任务,Bash 零依赖、随处可用。比如我有一次要给 100 台服务器同步一份配置,用 Bash 循环加 scp 就解决了:
for host in $(cat hosts.txt); do scp app.conf "$host:/etc/app/app.conf" done但逻辑一旦复杂,比如需要判断远程版本、失败自动重试、把结果整理成报告,Bash 就会显得吃力。这时候我通常会换 Python,或者直接用 Ansible。Ansible 本身就是 Python 写的,playbook 是声明式语言,把“哪台机器该有什么状态”写得很清楚,比堆命令更不容易出错。Windows 环境的运维则正好相反,PowerShell 是根,从 AD 用户批量操作到软件分发都能干,配合配置管理工具使用效果更好。
3.2 文本处理与日志分析
文本处理是脚本语言最早的核心战场,到今天依然大量存在。我的处理习惯是这样:轻度格式化用 Linux 自带的 grep、awk、sed 组合,它们比任何脚本语言都轻;中度处理用 Perl 单行命令,正则表达式的效率极高;重度解析 JSON、XML,或者要做复杂的字段映射和业务逻辑判断,就直接上 Python,用完整的常用库去解析。
举个例子,统计一天内日志里各状态码的数量,用 awk 几秒钟完成:
awk '{print $9}' access.log | sort | uniq -c | sort -rn如果既要统计状态码,又要过滤特定 URL 参数,再对响应时间算 P95,awk 就会变得非常难写,这时候直接转 Python 更划算。我的经验是:文本处理不要硬背某一种工具,而是知道每种工具有多强、边界在哪。Bash 组合命令能上不了难度就赶紧换工具,耽误的时间也是成本。
3.3 数据分析与可视化
Python 和 R 在数据分析场景经常被拿来对比。我的结论是:科研和统计场景首选 R,工程化和通用数据分析首选 Python。R 的优势在于统计模型包非常系统,ggplot2 画出来的图直接达到论文要求;Python 的优势在于前后衔接方便,清洗完数据可以直接接业务接口,或者继续做机器学习模型。
实践中很多人是两门同时学:用 Python 做数据清洗,再把清洗好的数据交给 R 做统计分析和出图。这个组合在生物信息、金融量化领域都很常见。学习顺序上,我建议如果是纯数据分析岗位,先学 R 更快出成果;如果未来要做工程化落地,先学 Python 更划算。别贪多,先用一门跑通一个完整的分析项目,再补另一门。
3.4 跨平台脚本与通用自动化
如果你的脚本要在 Windows、Linux、macOS 多个环境运行,Python 是最稳妥的通用层。解释器在每个平台都有官方安装包,第三方库大多跨平台兼容,文件路径处理用标准库pathlib也能避开斜杠差异。PowerShell 7 是另一个跨平台选项,但它在非 Windows 环境的应用面没有 Windows 大。Zsh 和 Bash 严格来说只适合类 Unix 环境。
我写那种“给同事拿去各个环境跑”的脚本时,默认都是 Python。因为有类型错误会提前爆出来,兼容性问题比 Bash 少得多。反过来,如果只是在某台固定的 Linux 服务器上做一次性操作,Bash 反而更合适,不需要考虑环境差异。
3.5 选型速查表
| 典型场景 | 首选语言 | 备选补充 | 选型理由 |
|---|---|---|---|
| Linux 系统管理 | Bash Shell | Python | 系统自带、零依赖,管道组合效率最高 |
| Windows 系统管理 | PowerShell | Python | 原生组件、对象管道,直接操作 WMI/注册表 |
| 终端体验优化 | Zsh | Bash | 自动补全、历史建议大幅提升效率 |
| 日志与文本处理 | Perl | awk/sed、Python | 正则内嵌语法,单行命令处理快捷 |
| 统计分析/学术图表 | R | Python | 统计模型丰富,图表排版严谨 |
| 通用开发/工程化 | Python | Bash、PowerShell | 生态最全、跨平台最稳 |
| CI/CD 流水线脚本 | Bash | Python | 大多数 CI 环境原生支持 Bash |
这张表不是绝对标准,但能帮助你在大部分日常场景里少走弯路。如果实在没有明确的场景方向,从 Python 起步是最不亏的选择,它的适用范围最广,后续再学其他语言也会更轻松。
4. 高效入门路线:先把环境搭明白,再谈写脚本
4.1 按目标制定入门路线
我见过太多人一开始就把六门语言全装上,然后每个学一周,一个月后全部忘光。更合理的做法是按当前方向选一条主线。做运维的人,路线是 Bash 到 Python;做数据分析的人,路线是 Python 到 R;做 Windows 自动化的人,路线是 PowerShell 到 Python;做文本处理重度工作的人,可以直接深入 Perl。主线学扎实之后,其他语言等实际遇到了再补也来得及。
有个很实用的判断标准:你翻一翻自己最近一周的工作记录,哪种类型的活儿出现次数最多,就先学对应的那门语言。比如发现一周里有一半时间在 SSH 到服务器敲命令,那就老老实实把 Bash 系统学一遍,而不是先学 R。
4.2 环境准备与第一行脚本
入门阶段最影响体验的就是环境准备。Bash 在 macOS 和 Linux 上默认就有,Windows 用户建议装 WSL 而不是 Git Bash,因为 WSL2 更接近生产环境,学的东西能直接用在服务器上。Zsh 在 macOS 是默认 shell,Linux 上通过包管理器安装后执行chsh -s /bin/zsh切换。Perl 大多数类 Unix 系统自带,用perl -v能确认版本。
Python 建议直接去官网下载安装包,安装时勾选Add Python to PATH,这一步能在 Windows 上避免后续很多“找不到命令”的问题。R 则是在官网下载 R 主程序,再装一个 RStudio 作为日常工作台。PowerShell 的安装思路和 Python 类似,Windows 用户直接用 PowerShell 7,Linux 和 macOS 用户通过各自的包管理器安装。
装完之后各写一个 Hello World 建立信心:
#!/bin/bash echo "hello from bash"print("hello from python")Write-Host "hello from powershell"第一天的目标不是学语法,而是确认“环境是可用的、脚本能跑起来、报错信息我能看懂”。这三个条件满足了,后面就是积累问题、解决问题的过程。
4.3 入门阶段最容易踩的三大禁忌
第一个禁忌,是还没学会 Bash 就去折腾 Zsh 主题和插件。配置终端美化很有意思,但它会悄悄吃掉你大量时间,最后真正写脚本的耐心反而被消耗光了。先灰头土脸地把脚本写明白,再考虑好看的问题。
第二个禁忌,是在系统 Python 里直接乱装包。我见过很多初学者用pip install一路装,装到后面项目之间互相冲突,升级依赖以后什么事都干不了。从一开始就建虚拟环境,成本极低,收益极高。Python 3.3 之后自带venv模块,不需要额外安装,敲两行命令就解决了。
第三个禁忌,是用 Windows 记事本写脚本。记事本保存的编码和换行符很容易埋雷,尤其对 PowerShell 和 Bash 脚本很不友好。用 VS Code 这类现代编辑器,默认 UTF-8 编码,一眼能看到换行符和缩进问题,能挡掉大批新人常见的低级报错。
5. 常见问题与排查技巧实录
5.1 编码与乱码问题
乱码是脚本语言入门阶段最容易碰到的“幽灵问题”。最典型的场景是 Windows PowerShell 里执行脚本,输出中文变成����。Windows PowerShell 5.1 默认编码不是 UTF-8,而很多编辑器和脚本文件已经按 UTF-8 保存,两者一对接就乱。临时解决办法是在 PowerShell 里设置输出编码:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8长期方案是用 PowerShell 7,默认 UTF-8,乱码问题会少很多。Python 这边,读写文件时养成指定编码的习惯:
with open("data.txt", "r", encoding="utf-8") as f: text = f.read()R 语言读取中文 CSV 同样要指定编码:
data <- read.csv("data.csv", fileEncoding = "UTF-8", stringsAsFactors = FALSE)遇到乱码先不要急着改文件内容,先用file命令或编辑器看一眼文件到底是什么编码,再确认终端是什么编码,两边的编码统一了问题自然消失。
5.2 PowerShell 执行策略与权限问题
PowerShell 新手最常见的报错是:“无法加载文件 xxx.ps1,因为在此系统上禁止运行脚本”。这个错误不是病毒,也不是电脑出问题,而是 PowerShell 默认的执行策略不允许执行本地脚本。解决方法是在当前用户作用域下放开策略:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserRemoteSigned的意思是本地创建的脚本可以运行,网上下载的脚本必须经过签名。如果只是偶尔跑一次脚本,也可以不加策略直接绕过:
powershell -ExecutionPolicy Bypass -File my_script.ps1还有一种情况是 PowerShell 输出文本时控制台编码和脚本编码不一致,导致报错信息看着像乱码,处理方式参见上一节,先检查编码,再检查执行策略。另外,脚本文件如果是从网上下载的,Windows 可能会附带 Zone.Identifier 标记,解除方式是在文件属性里勾选“解除锁定”,或者在脚本里先执行Unblock-File。
5.3 “命令无法识别”与 PATH 问题
Windows 上最容易出现的错误是pip、python或者某条命令提示“不是内部或外部命令”。大部分原因就是安装时没勾选加入 PATH。Python 安装包里有Add Python to PATH的选项,漏掉之后可以手动把 Scripts 目录加进环境变量:
C:\Users\<用户名>\AppData\Local\Programs\Python\Python311\Scripts修改 PATH 之后一定要重开一个终端窗口,环境变量不会自动刷新。Linux 和 macOS 上如果出现command not found,先检查软件装没装,很多初学者拿python找不到,其实系统里装的是python3。这类问题本质上不是脚本语法问题,而是环境变量配置问题,排查思路是先用which或where找到真实路径,再决定是改 PATH 还是用绝对路径,不要一上来就怀疑脚本写错了。
5.4 跨平台脚本的兼容性坑
跨平台脚本最大的坑是换行符。在 Windows 上编辑过的文件,拿到 Linux 上跑往往会报$'\r': command not found之类的错。原因是 Windows 的换行是\r\n,Linux 只需要\n,多出来的\r被当成命令的一部分。修复方式很简单:
sed -i 's/\r$//' script.shBash 脚本一定要有执行权限:
chmod +x script.sh另外还有一个跟自动化脚本关联度很高的场景:写 Docker 相关脚本时,经常会遇到Permission denied while trying to connect to the Docker API at unix:///var/run/docker.sock。这个报错不是脚本语法问题,而是当前用户没有权限访问 Docker socket。解决方式是把用户加入 docker 组,然后重新加载用户组:
sudo usermod -aG docker $USER newgrp docker跨平台脚本里凡是涉及路径处理,都建议不要在硬编码里写死\或/。Python 用pathlib.Path,PowerShell 用Join-Path,这样脚本在多个平台迁移时少很多麻烦。
5.5 包管理与依赖冲突
脚本语言的包管理各有脾气。Python 这边最稳妥的方案是每个项目一个虚拟环境,用pip freeze > requirements.txt固化依赖版本,团队协作时别人通过pip install -r requirements.txt即可复现环境。R 语言的包安装经常碰到编译失败,比如rgdal需要系统里先有 GDAL 库,在 Ubuntu 下先安装系统依赖再回到 R 装包:
sudo apt install libgdal-dev libproj-dev重新回到 R 里执行install.packages("rgdal"),成功率会高很多。PowerShell 的模块安装也容易踩坑,最常见的是Install-Module报 TLS 或 NuGet 问题。在较旧的系统上,先强制启用 TLS 1.2 通常能解决:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12Perl 模块则建议放弃裸cpan,直接装cpanm,后者会把依赖解析、下载、编译全部自动化,出错概率低很多。
5.6 常见问题速查表
| 现象 | 可能原因 | 直接解决 |
|---|---|---|
| PowerShell 禁止运行脚本 | 执行策略限制 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
| 终端输出中文乱码 | 编码不一致 | 设置 UTF-8 编码或升级 PowerShell 7 |
pip不是内部或外部命令 | Python 未加入 PATH | 重新安装并勾选 Add Python to PATH |
Windows 脚本在 Linux 报$'\r' | 换行符不兼容 | sed -i 's/\r$//' script.sh |
| Docker API 权限被拒 | 用户不在 docker 组 | sudo usermod -aG docker $USER |
| R 包编译失败 | 缺少系统依赖 | 安装对应底层开发库后重试 |
最后说点我的个人体会。刚开始工作那几年,我也犯了“每门都学一点、每门都不深”的错误,真正改变习惯的是接触了第一个大型运维项目,被迫把 Bash 和 Python 用到滚瓜烂熟。我的建议是:不要同时开六条战线,先用一门语言解决一个真实问题,第 30 天之后的成长速度远超第一周。一个小技巧是,每个脚本文件的头部都写清楚用途、参数、使用示例,再顺手加上日志输出。这些基础习惯养成了,后面学任何新语言都会比别人快不少。