什么是可能需要转义的linux路径字符

Nul*_*x00 1 java regex linux scala

我想知道什么是需要逃避Linux路径的所有char.例如,路径/ home/user1/My Music/song 1.mp3需要在shell中为ls命令'ls/home/user1/My\Music/song\1.mp3'进行转义.

我想编写一个函数,它将String作为路径并转义所有需要的字符.在斯卡拉我有:

  def normalizePath(path: String): String = {
var normPath = path.replaceAll(" ", "\\\\ ")
normPath = normPath.replaceAll("\\]", "\\\\]")
normPath = normPath.replaceAll("\\[", "\\\\[")

normPath
Run Code Online (Sandbox Code Playgroud)

}

知道有更多的char需要转义.此外,这可能可以通过一个命令(更复杂的正则表达式)来完成?

J-1*_*DiZ 7

你不应该继续这样做.有很多方法可以解决这个问题(例如设置FS环境变量).只需使用ProcessBuilder该类传递命令行参数即可.

ProcessBuilder proc = new ProcessBuilder("ls", "/home/user1/My Music/song 1.mp3");
proc.start();
Run Code Online (Sandbox Code Playgroud)