Je me demande quels sont tous les caractères nécessaires pour échapper un chemin Linux. Par exemple, path/home/user1/Ma musique/chanson 1.mp3 doit être échappée dans un shell pour la commande ls/home/user1/My \ Music/song \ 1.mp3 '.Quels sont tous les caractères de chemin d'accès linux possibles qui doivent s'échapper
Je veux écrire une fonction qui accepte une chaîne comme chemin et échappe tous les caractères nécessaires. En scala je:
def normalizePath(path: String): String = {
var normPath = path.replaceAll(" ", "\\\\ ")
normPath = normPath.replaceAll("\\]", "\\\\]")
normPath = normPath.replaceAll("\\[", "\\\\[")
normPath
}
Sachant qu'il ya plus d'ombles qui ont besoin d'échapper. Aussi, cela pourrait être fait par une commande (regex plus complexe)?
oui Normaliser 'chaîne (string s) {return "\" "+ s +" \ ""; } ' – Novikov
Pourquoi ne pas simplement utiliser un shell pour cela en premier lieu? –
La réponse dépend de l'endroit où vous prévoyez d'utiliser le chemin. Par exemple, si elle doit être transmise au shell, alors vous devez échapper les caractères spéciaux interprétés par le shell (qui peuvent inclure '!', '*', '?', Etc., et peut-être dépend de quel shell est utilisé).Si vous placez le chemin dans une URL, vous devez échapper à un ensemble de caractères différent et utiliser un mécanisme différent pour l'échappement (% -encode). Et si vous utilisez le chemin directement avec un appel système Linux, vous n'avez pas besoin d'échapper à quoi que ce soit. –