首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >echo $‘hi\n hi’> /etc/list.list无效

echo $‘hi\n hi’> /etc/list.list无效
EN

Unix & Linux用户
提问于 2021-02-22 17:27:08
回答 1查看 85关注 0票数 0

当我在可执行脚本文本文件中使用echo $’hi\nhi’ > /etc/list.list时,我在Kali Linux2020.4 Live上创建了多个命令:

  1. 在文件文本中包括$,同时消失2 ’’符号。
  2. 这并不能创造一个新的线,将2hi的S分开,而只是显示\n而没有任何分离。

但是,当我在可执行文件或普通终端之外使用相同的命令时,它可以工作。

Kali 2020.4是否从2020.3改为不允许我在可执行文本文件中使用回波格式,因为它用于完美地工作?我是否还可以为echo使用其他命令,以便在1行命令中创建新行?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-02-22 18:33:44

您的命令有许多问题,幸运的是,它们都很容易解决:

  1. 正如卡西莫多在他们的评论中提到的那样,不是在伯恩再一次 (又称"BASH",Kali上的默认shell解释器)中分隔字符串的有效字符。需要用单引号(')或双引号(")替换它。以下是关于在BASH中引用的一些很好的信息。
  2. 您正在尝试在您的逸出序列命令中使用“echo”,但没有提供-e标志。
  3. 基于您不希望在输出中使用美元符号字符($)这一事实,您似乎正在尝试执行"参数展开“或(如斯蒂尔·德里弗在注释中所指出的)来创建ANSI引号

根据ANSI引用的GNU BASH文档:

格式$'string‘的单词将被特别处理。单词展开为字符串,反斜杠转义字符替换为ANSI C标准指定的字符。反斜杠转义序列,如果存在,则被解码。

对转义序列的理解是这个答案的重要区别。您可以选择在何处发生shell扩展:在运行echo的阶段或在使用ANSI引用时。之所以做出这种区分,是因为在某些情况下,必须在echo之外指定这些类型的扩展才能达到预期的效果。经过进一步思考,我记得awk是我看到这个问题出现的一个工具:

使用反斜杠或单引号分隔字段。

总的来说,我还会回顾BASH黑客wiki的"新手陷阱-变量“部分,特别是关于”设置变量“和”扩展(使用)变量“的子部分。

这些是BASH本身的基本语法问题,不会受到对Kali的小版本更新的影响。

编辑:增加了3a/3b的细目,以包含来自斯蒂尔·德里弗's评论的信息。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/635845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档