转义的文件名斜杠

时间:2011-02-11 04:09:43

标签: string bash escaping

我想从用户输入的字符串生成文件名,并确保安全地转义它。

例如,如果用户输入/usr/bash,则输出将为\/usr\/bash 如果输入为The great theater,则输出为The\ great\ theater

1 个答案:

答案 0 :(得分:5)

您确定需要这样做吗?这是一种代码味道。除了改变你的输入之外,你很可能有更好的方法去做你想做的事情。在使用变量时正确引用变量通常就足够了:

$ file='some file name.txt'
$ touch "$file"
$ ls "$file"
some file name.txt

但是,如果您坚持使用%q格式与printf:

$ str='The great theater'
$ printf '%q\n' "$str"
The\ great\ theater
$ escaped=$(printf '%q' "$str")
$ echo "$escaped"
The\ great\ theater

请注意,这不会转义斜杠,因为它们通常不是特殊字符。