【问题标题】:Why is bash's print statement `echo` instead of `print`? [closed]为什么 bash 的打印语句是 `echo` 而不是 `print`? [关闭]
【发布时间】:2013-12-19 15:50:29
【问题描述】:

“打印”似乎在许多编程语言中都有很好的表示,即使在 Fortran (1957) 等较旧的东西中也是如此。为什么 bash (1989) 使用 echo 而不是 print 作为打印到屏幕的功能?

有没有一些有趣的计算机历史故事,或者一些平凡的东西?设计决策是否与 $ man print 向我提供有关 MAILCAP 的信息这一事实有关?

更多研究,echo 似乎已在 1984 年之后在原始 Bourne shell 中引入(作为内置函数):https://en.wikipedia.org/wiki/Bourne_shell 显然,在此之前它存在非内置。

来自 cmets 的更新(通过 Wumpus Q. Wumbley):到目前为止,此线程发现的最早回声参考是 V3 (1972)

【问题讨论】:

  • 好吧echo 听起来比print 好得多,但这可能不是原来的东西
  • 这个问题似乎是题外话,因为它是关于计算机工具的历史和当时做出的任意决定;不是编程问题
  • 不可能是因为与mailcap的命名冲突。 echo 命令回到 unix 的开头。 bash 不是 1989 年设计的全新语言!它是 unix shell 的一个新实现,它更老。
  • 既然我已经用完了事实,这里有一些猜测:如果 unix 是第一个使用名称“echo”的,那是因为 unix shell 是第一个将打印字符串外包给的语言一个外部程序,因为 unix 是第一个说“进程很便宜,让我们大量使用它们”的系统。
  • Unix 很可能使用 echo 来打印参数,因为 Multics 确实如此。来自multicians.org/mge.html:echo - 在标准输出上打印其参数的命令。 1967 年 12 月,Multics 在第一阶段里程碑执行的第一个命令。

标签: bash unix history


【解决方案1】:

在语义上,echo 与编程语言中的 print 语句不同。 echo 是一个简单的程序,它输出相同的输入,在 bash 脚本中对于打印内容非常有用,但这不是它的目的。

print 在大多数程序语言中是write to stdout 的快捷方式。这恰好打印到控制台,但也可以打印到文件或打印机。恕我直言,它们在概念上是不同的,无法比较。

【讨论】:

  • echo 也可以“打印到文件或打印机”。
  • 此外,bash 手册页建议使用 printf 而不是 echo,但不会因为 echo 的广泛使用而过时。
最近更新 更多