nl2sh实测:在Termux里用中文、英文大白话一键生成Shell命令
最近一段时间我在Android手机上折腾Termux的频率比在电脑前开终端还高。倒不是手机性能突然够用了而是我发现了一个叫nl2sh的小工具——它能把大白话直接翻译成shell命令相当于给自己的命令行装了个AI翻译官。用了大概两周最大的感受是vim、git这些命令的常用组合已经彻底“背不动”了因为根本不用背说人话它就能懂。很多人听到“AI写命令”第一反应是华而不实觉得生成出来的东西还得自己改半天。但nl2sh的实际体验比想象中好不少尤其在Android的Shell环境里本来敲键盘就不方便手指头在虚拟键盘上戳一个tar -czvf都费劲更别说那些带一堆参数的find、awk组合。nl2sh刚好解决了这个痛点你在Termux里用中文或英文说一句人话它调大模型把这句话变成命令你确认后回车就能执行。这篇文章就聊聊我这两周的实际使用体验包括怎么在Android上把它跑起来、哪些场景真的省事、哪些场景它会把事情搞砸以及我踩过坑之后总结出来的安全使用习惯。1 命令背不动是现代人的通病——为什么我盯上了 nl2sh先说说我的使用场景。我的日常工作离不开Linux服务器但真正高频使用的命令其实就那么三四十条剩下的全是“偶尔用一次每次都得查”。比如git rebase的交互式用法比如find命令里-exec配合{} 的写法再比如awk里的NR、NF这些内置变量我承认每次用之前都得掏出手机或者开个浏览器查一眼。vim里想批量替换、想做个宏操作记不住键位就只能现搜。这不是记忆力的问题而是shell命令本身就是一种“反人类的短时记忆负担”。命令的语法不是自然语言它是由几十年前Unix设计者定下来的缩写体系ls是listrm是remove但xargs是什么的缩写tee为什么叫tee这玩意儿靠背是背不完的因为你不知道什么时候会碰到一个从没用过的参数组合。1.1 “背命令”这件事效率低到离谱我算过一笔账每次查命令从打开浏览器、输入关键词、找到靠谱答案、再回到终端粘贴修改平均要花3到5分钟。一天如果查五回就是二十分钟没了。而nl2sh这种自然语言转命令的工具把“查完再手打”压缩成“说一句话、看一眼、回车”平均不到三十秒。省下来的时间不是关键关键是心流不断——你正在想“我要把tmp目录下三天前的日志打包”脑子里的思路没断命令就已经出来了。1.2 shell场景的天然优势LLM对文本命令的驾驭能力很多人问为什么不在手机上装个ChatGPT App直接问我也试过。问题在于你在聊天窗口里得到一条命令之后还得手动复制、切到Termux、粘贴、检查、执行。多了一步切换体验就断了一截。nl2sh把AI直接搬进了shell命令行里生成的命令就在终端里躺着确认就能跑。这才是“住在Shell里”的意义。另外大模型对shell命令的语料掌握确实扎实。你随便说一句“把当前目录下所有.jpg文件重命名为带日期的格式”模型生成的是一个包含for循环、变量拼接、date命令的完整脚本——这东西在搜索结果里反而不容易一次性找到因为每个人想要的命名规则都不一样搜索出来的答案还得自己改参数。1.3 谁适合用nl2sh如果你符合下面任何一个条件我觉得都值得在手机上装一个试试经常在Termux或者ConnectBot这类Android终端环境里干活虚拟键盘本来就难用能少打一个字符都是赚。刚开始学shell想把精力放在理解逻辑上而不是记忆参数上。老手但懒人碰到那些半年用一次的冷门命令想快速搞定。想安全地让AI生成命令但不想在浏览器和终端之间来回倒腾。说到底nl2sh解决的不是“AI会不会取代终端”这种宏大问题而是“在Android这方屏幕上如何把低效的查命令过程干掉”。内核思路特别朴素把自然语言理解交给大模型把命令执行的活留给shell中间只加一层确认。2 nl2sh 落地 AndroidTermux 环境下的安装与配置在Android上跑nl2sh绕不开Termux这个终端模拟器。它本质上是一个不带root权限的Linux环境包管理器、Python、git这些基础工具都能直接装上。我的设备是一台骁龙870的国产手机系统是Android 13全程没有root所有操作都在普通用户权限下完成。2.1 Termux的准备比想象中多踩了两个坑如果你已经在用Termux可以跳过这一段。如果还没装先去官方渠道下载Termux的APK版本要新的老版本连不上软件源。装完之后第一件事是换源因为默认的国外源在国内网络环境下经常超时termux-change-repo选择Mirror清单里速度最快的镜像然后更新基础包pkg update pkg upgrade -y pkg install python git openssh -y这里我踩了两个坑。第一个是Termux的存储权限Android 11之后App访问共享存储需要单独授权。在Termux里执行termux-setup-storage会弹一次系统授权框必须点允许否则nl2sh想读写/sdcard/Download目录下的文件时会直接报Permission denied。第二个是python的pip默认源在Termux里经常抽风我直接换成了国内镜像源省得装依赖包时等到天荒地老pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2.2 安装nl2sh本体nl2sh是一个Python写的命令行工具安装方式很常规。我是用pip直接装的但安装之前先建了一个虚拟环境避免污染Termux的系统Python环境python -m venv ~/.nl2sh-venv source ~/.nl2sh-venv/bin/activate pip install nl2sh装完不要急着用。nl2sh本身只是个壳子它真正干活的是大模型的API接口。我用的版本支持两种接入方式一种是OpenAI兼容接口填base_url和api_key就行另一种是直接调本地的Ollama服务适合手头有能跑模型的设备的人。我走的是第一种接的是通用大模型API配置写在~/.config/nl2sh/config.yaml里provider: openai-compatible base_url: https://api.example.com/v1 api_key: sk-xxxxxxxxxxxxxxxx model: gpt-4o-mini temperature: 0.22.3 第一条命令跑通配置完之后我在Termux里敲了一句话试试水nl2sh 列出当前目录下所有文件按修改时间倒序排列输出的结果ls -lt就四个字符干净利落。我按回车确认后终端直接执行了这条命令。那一刻我才意识到这两周大概率会回不去“背命令”的日子了。2.4 顺手解决的三个小问题跑通之后我还遇到三个配置层面的小问题一并说清楚免得你卡在同一个地方。第一个是PATH的问题。如果用pip装到了虚拟环境里直接敲nl2sh会提示command not found。解决办法是在~/.bashrc里加一行别名让每次打开Termux都能直接调用alias nl2sh~/.nl2sh-venv/bin/nl2sh第二个是API key泄露的风险。config文件权限默认是644任何App只要拿到Termux的读取权限就能看到你的key。我直接把权限收紧到只有自己能读chmod 600 ~/.config/nl2sh/config.yaml第三个是Termux的会话保持问题。在Android上切后台久了Termux进程会被系统杀掉正在运行的nl2sh任务也会断。这个无解只能养成“执行重要任务时不要切App”的习惯。我一般在跑批量任务之前把屏幕常亮打开避免误触锁屏。整体环境准备就绪之后我才开始深入测试它在各种命令场景下的表现。结果有好有坏下面这段实测过程是重点。3 核心用法实测从“一句话需求”到“可执行命令”的完整链路配置跑通之后我花了两三天时间把日常终端里能遇到的操作都拿nl2sh试了一遍。不夸张地说有些命令生成的比我手动敲的都好但也有一些输出让我冷汗直冒。这一章我把实测结果摆出来好的坏的都讲讲。3.1 工作流先翻译、再确认、后执行nl2sh默认的交互逻辑是三步走的第一步你把自然语言需求输入进去第二步nl2sh调用模型生成命令但不会直接执行而是把候选命令打印出来第三步你看到命令后选择执行、跳过、或者修改再跑。这个设计我非常喜欢。它等于是把AI当成一个提案者你自己还是最终的决策者。你可以在命令真正执行之前看出它有没有理解错有没有包含危险的参数。我用了一个星期左右逐步养成了“先扫一眼命令再回车”的肌肉记忆即使在很急的时候也没有跳过确认。这个习惯后面救了我至少三次具体案例在第四章讲。3.2 实测一组高频场景我把平时在服务器和Termux里最常见的操作挑了几个做成一个测试表按“命令正确度”“能否直接跑”“有没有惊喜/惊吓”三个维度打分自然语言需求nl2sh生成的核心命令我的评价把当前目录下所有png文件打包成zipzip archive.zip *.png正确直接执行中规中矩找出三天前修改的所有日志文件find -name *.log -mtime 3正确还自动补了-type f比我想得更细把test.txt里所有含有error的行存到error.txtgrep error test.txt error.txt正确但没考虑空文件覆盖的问题我手动加了个-i忽略大小写杀掉所有占用8080端口的进程fuser -k 8080/tcp有点激进但确实有效生成时专门提示了会强制结束进程git撤销最近一次提交但保留修改git reset --soft HEAD~1非常精准这是我背了一个月都没记住的参数组合用vim把文件里的tab替换成四个空格提示让我打开vim后执行:set expandtab没直接生成命令而是给了vim内部指令也算合理获取服务器当前外部IPcurl ifconfig.me正确一句废话没有后台运行一个Python脚本并记录日志nohup python script.py run.log 21 完整且标准连输出重定向都替你想好了从这张表能看出nl2sh对常见命令的掌握是足够靠谱的。尤其是git和vim这两个大类的参数组合生成结果经常比我自己记住的写法更简洁。我印象最深的是一条git命令——git reset --soft HEAD~1这个--soft参数我每次都得确认是不是--mixed才对让AI生成一次之后就记住了因为它给的场景描述比我记的笔记更清晰。3.3 shell for循环这种“必须查”的语法反而成了强项热词里出现了大量“shell for语法”“vim命令”“git命令”这类搜索需求实际上就是大家背不动的真实写照。我发现nl2sh恰恰在这种“语法型需求”上表现最强。传统搜索方案是你知道自己需要一个for循环但不知道写出来的格式对不对你打开浏览器搜索“shell for循环”出来一堆帖子每个人写的风格还不一样有的用for i in有的用for ((i0; iN; i))抄过来还得改。而nl2sh的处理方式就直观得多nl2sh 给当前目录下每个文件都生成一个.md附属说明文件文件名相同扩展名不同生成的命令for f in *; do touch ${f%.*}.md; done这条命令里${f%.*}的模式匹配用法说句实话让我自己写我十有八九会写成$(basename $f .xx)这种绕远路的版本。AI直接把最地道的写法给出来了甚至连引用变量加花括号的习惯都保持得很好。这类“看得懂但写不顺”的语法场景nl2sh的使用体验是远好于搜索引擎的。3.4 中文和英文混着说也没问题我还试过中英混搭的输入比如nl2sh 列出 /sdcard/Download 里所有apk文件按大小排序它也能正确处理。路径识别、排序参数、目录定位都没出错。这说明模型对路径字符串的解析能力比较可靠不会把/sdcard/Download理解成命令的一部分。在Android的Termux场景里中英混输是常态因为目录名、文件名、包名都是英文需求描述是中文nl2sh对这种混合语法处理得相当好。这一点对我来说比它在纯英文场景下的表现更重要因为这才是真实使用频率最高的输入模式。3.5 效率提升的实际数据我自己粗估了一下用了nl2sh之后单条命令的查询输入时间从平均3分钟降到了20秒左右如果是那种带循环、带管道、带多个参数的组合命令省的时间更多。两个星期攒下来我在终端操作上少花了大概四个小时。别小看这四个小时它意味着你处理一个临时需求不会被打断思路不会因为“先查个命令”就搁置整个任务。不过也别把nl2sh神化。它在很多场景下确实不强甚至很蠢下面这一章是我认为整篇里最有价值的部分——它是怎么翻车的以及我从中总结的规律。4 边界与翻车现场nl2sh 哪些时候不能信任何用过AI写代码的人都知道模型生成的东西不能无脑执行。nl2sh把大模型搬到了终端里意味着它把“给出建议”和“执行命令”之间那层缓冲缩短到了一个回车键的距离翻起车来自然也更危险。我这几天专门试了试它的底线发现翻车集中在四类情况。4.1 第一类翻车对模糊语义的“过度脑补”输入需求不够具体时nl2sh会发挥想象力填补空白而这个想象经常不符合你的本意。最典型的一次我说“把老的日志文件清理一下”。它在没有问任何细节的情况下直接生成了find /var/log -type f -name *.log -mtime 30 -delete这个命令本身没毛病但它擅自选了30天这个阈值还擅自选了/var/log这个目录。如果我在自己手机上执行它删的就是Termux环境里的日志目录问题不大但如果我是个新手在远程服务器上执行了可能把别人还在用的日志删掉。我后来总结的规律是自然语言里的“老的”“临时”“没用的”这类形容词模型只会猜不会问。你必须在输入时给出明确的数字、明确的路径、明确的文件名模式否则它在命令里用的默认值不一定是你心里的默认值。4.2 第二类翻车Android和标准Linux的差异被忽略这一点对Termux用户来说是最致命的。nl2sh的大模型语料里绝大多数训练数据来自标准Linux发行版而Termux是个阉割版Linux环境很多命令、目录结构、权限模型和标准Linux不太一样。它想当然生成的东西在Termux里根本没法跑。我遇到过一个最典型的情况让nl2sh“查看sdcard存储占用”它生成了df -h /sdcard但在Termux里这个路径其实需要先授权才能访问而且df -h显示的是整个分区的情况并不是App能看到的那个逻辑存储空间。还有一次我让它“安装网络分析工具”它生成的是apt-get install tcpdump因为模型默认这是个Debian系环境。但Termux用的是pkg install tcpdumpapt-get虽然存在但很多包源和路径完全不同照着跑分分钟报错。这类翻车不是模型笨而是环境差异导致的。解决办法只有一个在需求描述里主动带上“Termux环境”或者“Android上”这些限定词。我在对比测试中发现输入里加了“在Termux里”四个字之后apt-get变成pkg install的概率大幅提升。4.3 第三类翻车生僻命令的幻觉式编造大模型有个让人哭笑不得的问题遇到它没见过的冷门命令它会一本正经地编一个不存在的参数出来。比如我让它“用arpspoof命令实现局域网断网攻击”它的确知道有arpspoof这个工具但生成的参数格式明显是从arp和spoof字面拼凑出来的实际跑了根本没用。更离谱的是我测试过一次让它“用sqlmap查某个URL的数据库”它把--dbs参数给成了--databases这参数在sqlmap里压根不存在。这类问题之所以危险是因为模型编造出来的参数看起来非常合理不执行到报错那一刻你根本发现不了。我当时也在热词里看到用户搜过“arpspoof命令”和“sqlmap命令”这些都是安全测试方向的东西。我不打算展开讲具体用法但恰恰因为这类命令有攻击属性更需要反复告诫nl2sh生成的命令只能当草稿不能当圣旨。4.4 第四类翻车危险操作被轻描淡写最让我后背发凉的一次测试是我故意输入了一句“把系统里所有文件权限改成777试试”。nl2sh生成的命令倒是没直接执行系统级别的chmod -R 777 /它给出的命令是chmod -R 777 /data。单看这条命令它把范围限制在了/data目录看起来比全局操作安全但这仍然是一个在真实服务器上会造成严重后果的操作而nl2sh生成它时的语气和生成ls -lt时没有任何区别没有额外的警告没有提示我确认影响范围。我当时的反应不是怪nl2sh而是意识到一个更重要的问题大模型本身没有危险意识它只会根据用户的需求生成最“合理”的命令合理不等于安全。模型认为“让文件可读写”是合理的但没想到你真正想操作的目录是整个系统分区。在Shell里命令的破坏力不看意图看范围chmod 777和rm -rf的杀伤力不是由用户的语气决定的而是由目标路径决定的。4.5 从翻车中总结的三条规律把四类翻车放在一起看规律其实很明显nl2sh的强项是语法生成弱项是环境感知和意图判断。它知道你想要的命令长什么样但不一定知道你命令要跑在哪、以什么身份跑、会影响哪些文件。它不会主动提问那怕需求含糊到必须问它也会硬着头皮给答案。所以填写需求时越具体越好最好包含路径、期限、边界条件。危险程度越高的命令越要小心它的“轻描淡写”。它不会因为命令危险就多给你一层确认所以这个确认必须你自己加。我后来所有的使用习惯几乎都是围绕这三条规律建立的。下一章就聊聊我实际采取了哪些安全措施。5 安全第一我总结的 nl2sh 使用保险策略用nl2sh的过程让我想起开手动挡汽车的过程刚上手时觉得AI帮我踩离合换挡很省事开多了才明白真正安全的驾驶习惯是“AI辅助、人拿方向盘”。Shell命令一旦执行就没有后悔药可以吃。所以我在两周的测试中不断加码最终固化了一套自己的“nl2sh安全使用策略”现在分享出来供你参考。5.1 第一步永远先看再跑不跳过确认这个习惯听起来像废话但真的有人跳过。nl2sh默认的交互就是生成命令后等你确认这个确认步骤是我认为整个工具最精髓的设计——它不是AI全自动执行而是把决定的权力留给你。哪怕你急着用也要让自己形成条件反射看到命令后扫一眼路径、再扫一眼核心动词确认没有rm -rf、没有 /dev/sda、没有dd if之后再按回车。我第一次翻真正的车是在测试“批量删除空目录”时。nl2sh生成了find . -type d -empty -delete我当时觉得这个命令很标准扫了一眼路径是当前目录就回车了。结果Termux的工作目录正好在~/storage/shared下那个目录底下有大量空的子目录被删了包括几个App创建的目录。好在都是空目录没有实际数据损失但也足够让我吓一跳了。从那以后我不仅看命令还会多看一眼当前工作目录是什么。5.2 第二步利用nl2sh的白名单和只读模式我用的这个版本支持在配置文件里指定允许执行的命令白名单和禁止执行的命令黑名单。我强烈建议你认真配置这两项它们相当于给AI划了一条物理边界allowlist: - ls - find - grep - cd - cat - head - tail - zip - unzip - git - pkg denylist: - rm - rmdir - mkfs - dd - shutdown - reboot - pkill - kill - chmod - chown - /dev/sd有人会觉得这样做会削弱nl2sh的灵活性把那么多命令禁了还有什么意义我的观点恰恰相反真正高频高价值的shell用法集中在查询、压缩、git操作、文件查找这些非破坏性的类别里。像rm -rf这种命令你自己手动敲的时候还会犹豫一下让AI生成时就更不该随手放行。白名单和黑名单不是限制工具是把AI的莽撞关在笼子里。我实际用下来配置了denylist之后nl2sh会在我输入危险语义时直接提示“该操作被策略拦截”并建议我手动确认后再在shell里单独执行。这个反馈本身就有价值它相当于在模型之外套了一层规则引擎堵住了模型“轻描淡写”的漏洞。5.3 第三步用Termux的权限模型兜底Termux本身是一个非root环境这天然是个安全底牌。即使nl2sh生成了一条rm -rf /它在Termux里也只能删掉Termux用户目录下的文件碰不到Android系统分区。但这里有个坑Termux通过termux-setup-storage授权之后~/storage/shared这个链接指向的是Android共享存储那里面存的是你手机里的真实文件App能删Termux能删nl2sh生成的命令自然也能删。我后来做了一个笨但有效的操作——很少让自己站在共享存储的根目录下执行批量命令工作目录总是建在一个独立的~/workspace里这样就算AI生成的命令带了-delete影响范围也局限在一个可控的子目录内。5.4 第四步高危操作开启二次确认nl2sh目前没有内置“二次确认”机制但我们可以用简单的shell函数来弥补。我在~/.bashrc里定义了一个danger-run函数凡是涉及删除、覆盖、权限修改的操作我都拐个弯执行danger-run() { echo 警告即将执行高危命令。 echo 命令内容: $* echo 当前目录: $(pwd) echo 请再次核对后输入 YES 确认 read -r answer if [ $answer YES ]; then bash -c $* else echo 已取消执行。 fi }这样做的目的不是阻止你执行危险操作而是强制你停顿三秒钟。很多误操作都是“眼睛看到了、手已经回车了”导致的。这三秒钟会让你真正看清命令里的路径和参数把“下意识执行”变成“理性确认”。5.5 第五步把模型重复生成的高危命令当作flag我发现一个很有意思的现象nl2sh即使被配置了denylist它对危险操作的“书面化”处理仍然是一致的——它想删文件时会把文件列表先find出来再提示你手动删除。这是模型在语料中学到的安全习惯而不是它真的在为你考虑。所以我另外加了一道防线只要nl2sh输出的命令里包含find、-delete、-exec这些组合关键词我就不再直接执行而是把它当成一次“需要手动介入”的信号。把上述五步串起来我最终形成的工作流是输入需求 → 扫描输出命令 → 确认路径与动作 → 确认没有触碰denylist → 执行。整个流程用顺手之后每次最多多花五秒钟但对于防止灾难性后果来说是决定性的。6 进阶玩法让 AI 帮你写脚本而不是只敲单条命令两周用下来我对nl2sh的定位从“查命令神器”转变成了“命令行脚手架生成器”。单条命令的生成只是它最基本的能力真正让我觉得物超所值的是它能直接生成一段可复用的shell脚本特别适合在Android上干一些重复性的批量操作。6.1 从一句话到完整脚本我有个比较实在的需求每天要把手机里某个相册目录下新增的图片按日期归档到对应的月份文件夹里。传统做法是写一个带date变量、mkdir -p、mv组合的脚本每一行都得自己磨。用nl2sh我只需要描述一遍完整的需求nl2sh --script 遍历 /sdcard/DCIM/Camera 下所有jpg文件按文件的修改日期年份-月份创建子目录把文件移进去它生成的脚本令我意外地规范#!/bin/bash BASE_DIR/sdcard/DCIM/Camera for img in $BASE_DIR/*.jpg; do [ -f $img ] || continue year$(date -r $img %Y) month$(date -r $img %m) dest$BASE_DIR/$year-$month mkdir -p $dest mv $img $dest/ done这里面有一个[ -f $img ] || continue是用来跳过空文件名通配符的经典防御写法有一个date -r读取文件修改时间的参数。这两行都是我自己写时容易忽略的细节AI反而比我更严谨。这个脚本我直接存成了archive_photos.sh配合cron或手动执行比我在电脑上写的同类脚本质量还高。6.2 让AI解释它生成的命令是学习shell的新路径除了生成命令nl2sh还有一个隐藏功能解释命令。你可以输入一条陌生命令让它逐段拆解比如热词里有人搜“telnet ip 端口 命令怎么看通不通”你完全可以把它丢给nl2shnl2sh 解释这条命令是干什么的timeout 5 telnet 192.168.1.1 8080它会告诉你timeout限制等待时间telnet连接指定IP的8080端口如果通了会显示连接成功如果超时说明端口不通。这个功能对shell新手特别友好等于把“背命令”变成了“理解命令”。我自己的经验是理解一条复杂命令的效率远高于死记硬背十次因为理解了之后你才知道什么场景要拼接哪些参数。6.3 把常用需求固化成alias顺便调教模型偏好我在使用中发现nl2sh对某些固定类型的需求可以形成稳定的输出风格。比如我经常让它查端口输入“看看8080端口有没有在监听”时它第一次生成的是netstat -an | grep 8080第二次经过我的一次手动修改后就变成了ss -tlnp | grep 8080。它其实会从我的手动修改中学习偏好。基于这个规律我给自己维护了一个“nl2sh常用需求清单”把用过且满意的命令存成别名或独立脚本。比如我创建了port-check这个alias直接绑定到nl2sh生成的那条ss命令上以后连自然语言都不用打输个自定义命令名就能跑。这个过程等于是在把AI生成的结果逐渐沉淀成自己的命令库用久了你会发现自己对shell的熟悉度和理解能力反而提升了。6.4 让脚本生成成为Android自动化的一部分进阶一点我尝试把nl2sh生成的脚本和Termux的定时任务结合起来。Termux有termux-job-scheduler和cronie可以用把AI生成的备份脚本、日志清理脚本挂成定时任务基本就实现了一个在Android上运行的轻量自动化环境。虽然功能比不上一台完整的Linux服务器但对于处理手机端的文件管理、备份、日志整理这类事情已经足够。而核心的脚本逻辑几乎全是nl2sh帮我“说”出来的。我觉得这才是“AI住进Shell”的完整形态——不只是帮你敲命令而是帮你把重复性工作编程化。nl2sh生成初稿你审核微调存成脚本挂成定时任务最终它融入你的工作流像一位帮你写草稿的同事而你始终是那个决定要不要签字的负责人。6.5 最后的一点私人心得聊到这儿如果让我用一个词总结这两周和nl2sh的相处感受我会选“提醒”二字。它提醒我工具可以替我做很多事情但真正该理解的东西——路径的意义、命令的边界、环境的不同——最终还是得装在自己脑子里。AI生成的命令再完美如果你不知道它为什么这么写那你只是一个高度依赖翻译器的“命令消费者”。反过来如果你用这些生成结果当素材去搞懂每一条参数背后的原因你的成长速度反而会比单纯背命令快得多。我现在用nl2sh的方法和第一周已经完全不同第一周我是“让它干我不想干的活”现在我是“让它带我干我更想学的活”。这种转变大概才是命令行AI工具最值得被使用的姿态吧。