M.A*_*A.G 18 linux bash escaping
当我使用"tab"键时bash(当你开始输入文件名并希望它完成时),bash正确地转义文件名,如果我使用那个"转义"文件名,它就可以了.
例如:
An-Beat - Mentally Insine (Original Mix).mp3=> bash使用"TAB"逃脱
之后An-Beat\ -\ Mentally\ Insine\ \(Original\ Mix\).mp3
我正在搜索一个函数bash,它将以"tab"转义文件名的方式转义文件名.
seh*_*ehe 26
使用printf(1):
x='a real \good %* load of c$rap'
x=$(printf '%q' "$x")
echo $x
Run Code Online (Sandbox Code Playgroud)
将返回
a\ real\ \\good\ %\*\ load\ of\ c\$rap
Run Code Online (Sandbox Code Playgroud)
我将详细说明sehe对此问题的回应.
如果要传递要转换为shell脚本参数的参数,请将参数包含在"s"中.
#!/bin/bash
x=$(printf '%q' "$1")
echo $x
Run Code Online (Sandbox Code Playgroud)
我非常喜欢printf解决方案,因为它可以像bash一样完成每一个特殊的角色.
$ string="An-Beat - Mentally Insine (Original Mix).mp3"
$ echo ${string// /\\ }
An-Beat\ -\ Mentally\ Insine\ (Original\ Mix).mp3
$ string=${string// /\\ }
$ echo ${string//(/\\( }
An-Beat - Mentally Insine \( Original Mix).mp3
Run Code Online (Sandbox Code Playgroud)