当前位置: 首页 > 知识库问答 >
问题:

使用bash时需要转义哪些字符?

郭逸清
2023-03-14

在Bash中是否有需要转义的字符的全面列表?是否可以只使用sed检查它?

echo "h%h" | sed 's/%/i/g'

并且工作正常,没有转义%。是否意味着%不需要转义?这是检查必要性的好方法吗?

更一般的是:在shellbash中转义的字符是否相同?

共有1个答案

汪驰
2023-03-14

有两个简单而安全的规则,它们不仅在sh中有效,而且在bash中也有效。

这适用于除单引号本身之外的所有字符。若要转义单引号,请关闭其前面的引号,插入单引号,然后重新打开引号。

'I'\''m a s@fe $tring which ends in newline
'

sed命令:sed-e“S/'/'\\\\\''/g;1S/^/'/;\$S/\$/'/”

\I\'\m\ \a\ \s\@\f\e\ \$\t\r\i\n\g\ \w\h\i\c\h\ \e\n\d\s\ \i\n\ \n\e\w\l\i\n\e"
"

有一组简单安全的字符,如[a-zA-Z0-9,._+:@%/-],可以保留这些字符不转义以保持其可读性

I\'m\ a\ s@fe\ \$tring\ which\ ends\ in\ newline"
"

sed命令:lc_all=c sed-e's/[^a-za-z0-9,._+@%/-]/\\&/g;1{$S/^$/“”/};1!S/^/“/;$!S/$/”/'

注意,在sed程序中,不能知道最后一行输入是否以换行字节结束(除非它是空的)。这就是为什么上面的两个sed命令都认为它没有。可以手动添加带引号的换行符。

请注意,shell变量只为POSIX意义上的文本定义。未定义处理二进制数据。对于重要的实现来说,binary除了NUL字节之外还可以工作(因为变量是用C字符串实现的,并且意味着用作C字符串,即程序参数),但是您应该切换到“binary”区域设置,比如Latin1。

(通过阅读POSIX规范sh可以很容易地验证这些规则。对于bash,请查看@AustinPhillips链接的参考手册)

 类似资料:
  • 问题内容: 它们是否与XML相同,也许还要加上空格()? 我发现的HTML转义字符一些大名单,但我不认为他们 必须 进行转义。我想知道 需要 逃避什么。 问题答案: 如果你在文本内容预期的位置在文档中插入文本内容1,你通常只需要,你会在XML逃脱相同的字符。在元素内部,这仅包括实体转义与号和元素定界符小于和大于符号 : 在属性值内部,还必须转义使用的引号字符: 在某些情况下,跳过这些字符中的某些字

  • 只想确认Oracle SQL中需要转义哪些字符才能避免SQL注入?到目前为止,我只发现这篇文章似乎回答了我的问题:https://ss64.com/ora/syntax-escape.html.然而,正如我所听说的,amphora“@”字符也需要转义,因此,我认为上面的文章中有不完整的需要转义的字符列表。如果有人能告诉我Oracle SQL中需要转义的字符的完整列表,我将不胜感激。

  • 本文向大家介绍在使用HTML5时有哪些规则需要遵守?相关面试题,主要包含被问及在使用HTML5时有哪些规则需要遵守?时的应答技巧和注意事项,需要的朋友参考一下 使用HTML5需要遵守哪些规则? 新的特性应该基于HTML、CSS、DOM和JavaScript 减少对外部插件的需求(如Flash) 更好的错误处理 更多的替换脚本的标记 HTML5应与设备无关 开发过程必须可视化

  • 本文向大家介绍使用HTML5需要遵守哪些规则?相关面试题,主要包含被问及使用HTML5需要遵守哪些规则?时的应答技巧和注意事项,需要的朋友参考一下 * 新的特性应该基于HTML、CSS、DOM和JavaScript * 减少对外部插件的需求(如Flash) * 更好的错误处理 * 更多的替换脚本的标记 * HTML5应与设备无关 * 开发过程必须可视化

  • 我有一个使用Kinesis客户端库(KCL)编写的Kinesis消费者。此使用者在假定的IAM角色下运行。 我从文档中了解到: KCL使用应用程序名称创建一个DynamoDB表,并使用该表维护应用程序的状态信息(例如检查点和工作分片映射)。每个应用程序都有自己的DynamoDB表。有关详细信息,请参阅跟踪Amazon Kinesis数据流应用程序状态。 当然,我需要将dynamodb:Create

  • 本文向大家介绍css unicode字符集使用时要注意哪些问题?相关面试题,主要包含被问及css unicode字符集使用时要注意哪些问题?时的应答技巧和注意事项,需要的朋友参考一下 1.文档需要声明为UTF-8 2.编号用在HTML中时,需要在前面加上&#符号 3.用于CSS文件中,但是需要用反斜杠\转义 4.用于JavaScript,和CSS用法一样,不过要用\u来转义 参考博客:https: