
用户重新理解命令行:它更像一个混合式REPL环境
来源标题:The Command Line as Franken-REPL
一位长期使用Linux的用户提出,命令行的传统心智模型并不准确,它实际上更像一个“Franken-REPL”。他指出,命令行不只是输入命令、读取输出的信箱,而是一种始终可用、内嵌了完整编程语言的交互环境。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
[亲爱的 Unix 极客们:我接下来要胡扯一通。我太兴奋了,可能完全说错。]
正如我之前反复啰嗦过的,我从小就用 Linux,逐渐习惯了在命令行里完成大多数任务。但我对命令行到底是什么的心智模型,一直都是错的!
好吧,命令行确实吓人。我们不谈这个。因为命令行的吓人,和火、海洋、电锯、刀,或者一位怒气冲冲的老奶奶吓人是一个道理:它吓人是因为它能做事,而我们并不喜欢它能做的所有事,尽管我们看重其中的大多数。
这些东西吓人,主要是因为我们不知道它们能做什么,也不知道它们会做什么。有两种应对方式:敬而远之,或者试着去理解它们。我们已经选了第二种。
从技术上讲也没错。我在这里卡了很久。输入命令。读输出。谷歌报错。再试一次。输入一样东西,得到一样东西:就像是我电脑内部的一个信箱。
也没错!不仅没错,还有用。人很容易忘记,一门完整的 B 级编程语言时时刻刻都在你指尖,因为你正生活在它的 read–eval–print loop(REPL)里。
所以,从技术上讲,第 3 种说法也许最准确。但是,由于 Bash(以及其他 shell 脚本语言)的工作方式,这个模型更有用。因为在 bash 里,你不需要什么难看的 spawn/exec/eval 语法来运行非 bash 的东西:你直接用可执行文件的名字运行它就行。不必寄一封带正式请求、印着你信头的挂号信,你只要喊一声 Dave!12 乘 6 是多少?,他就回答了。
这看起来是个小差别,但其实不是。
这把你的 shell 变成了一个交互式 REPL……面向所有编程语言。(只要我不介意一头撞上 bash 各种古怪又糟糕的地方。)
你不仅可以在 bash 里使用任何编程语言,而不必搞那些繁琐的 spawn 仪式,而且你所有的脚本和缩写也都有了一等公民支持,最重要的是,coreutils 也是如此。一旦掌握了它们,你很少需要更多东西。
我以前把命令当成命令,当成程序。但看看 cat file.part1 file.part2。那是一个程序吗?不不不!那是一个函数。在 bash 里,程序就是函数。所有 coreutils 用起来几乎和 bash 内建命令一样原生。
(而且,你有的不是 SQL 数据库,而是文件系统。顺带一提,脚本就存在那里,让整件事变成一种令人头晕的 Lisp 式局面。)
你写的每一个小小的实用 shell 脚本,都会成为你整个电脑范围 REPL 里的又一个函数,可以反复使用。
一旦你意识到程序与电脑之间并无边界,你的整台电脑就变得美妙地可脚本化。
一位读者说,我大概应该在高潮处收尾,也就是它“无可救药地丑陋,并且异常危险”这一点。用他自己的话说:
太好了!检查你的收件箱并点击链接确认订阅。
嗯,没成功。请再试一次,如果还是不行,请联系我。
我写作并构建东西。 加拿大湿润的西海岸 https://curiositry.com
太好了!检查你的收件箱并点击链接确认订阅。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。