【问题标题】:Bash terminal command worriesBash 终端命令的烦恼
【发布时间】:2017-09-05 20:40:01
【问题描述】:

我最近拥有一台 MacBook。 由于这个和我的编程,我一直在使用终端。 我很无聊,所以决定捣碎我的键盘,最后输入了

agr'l

这很好,直到它使行的开头成为 > 并等待输入。同样在行的开头和结尾,它有方括号,就好像它们被绑定在一起一样

我们将不胜感激。

非常感谢

【问题讨论】:

  • 我还应该补充一点,这只是来自默认的 bash 终端
  • 我认为它只是在寻找结束单引号。尝试输入。
  • 您的问题到底是什么,您能否粘贴您得到的输出以及您想了解的具体内容?
  • 关闭单引号并按回车将退出>,刚刚测试它。你也可以随时使用 ctrl+c
  • 这只是一个关于使用你的shell的问题,它是一个通用工具。 StackOverflow 的范围明确限于有关软件开发和专门用于该目的的工具的问题。

标签: python bash macos


【解决方案1】:

在常见的 Bourne 兼容 Unix shell(shksh (Korn shell)、bashzsh 等)shell 将允许包含不匹配的引号或其他分隔符的行继续(例如有括号用于阻止带有子shell 的命令或 {curly;braces} 用于将语句组合在一起)。以反斜杠 \ 字符结尾的行也将继续。

在这些情况下,shell 将显示您的 $PS2 提示字符串(您习惯看到的是 $PS1 ...“提示字符串:主要”与“提示字符串:次要。”还有几个其他 $PS_ 环境变量用于提示通过调用内置的 select 和跟踪 shell 脚本执行的输出行生成(使用 set -x 命令,或 - x shell 的命令行选项)。

阅读手册页并在 PS1 到 PS4 上进行搜索,以了解有关每一个的更多信息。

【讨论】:

  • 嗯?符合 POSIX 的 shell 与 Bourne 不兼容。如果您想证明这一点,请尝试echo foo ^ cat——在原始 1970 年代 Bourne 中,与符合(受 ksh 影响的)1990 年代早期 POSIX sh 标准的 shell 不同,^ 是一个管道符号,所以这将打印 @ 987654325@;在现代 shell 上,它打印 foo ^ cat。也就是说:“Bourne Again”是巧妙的文字游戏,但不是准确的描述性。
  • @CharlesDuffy:请随意创建自己的页面或回答迂腐。我显然指的是与“Bourne”兼容的“普通”shell,以将它们与可能遇到的 csh 和各种奇异的 shell (en.wikipedia.org/wiki/Unix_shell#Exotic_shells) 区分开来。请随时查找现代版本的 Unix。 Linux 或 MacOS X,其中包含一种古老的 Bourne shell,并告诉我们所有关于它们的信息(其他地方)。
  • 在这里回答您的问题——Solaris 将古老的 Bourne 运送到了 2000 年代中期。 (它也可以通过 Heirloom 项目获得并积极维护)。
  • ...我的要求是明确地说,您使用短语“POSIX-compliant”或“POSIX-superset”而不是“Bourne-compatible”。
  • 顺便说一句,我没有添加答案,主要是因为这样做会违反 stackoverflow.com/help/how-to-answer 的“回答好问题”指南,该指南明确不鼓励回答离题的问题。
猜你喜欢
  • 2022-01-18
  • 2016-04-11
  • 2017-04-12
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 2012-04-11
  • 1970-01-01
相关资源
最近更新 更多