экранированные косые черты имени файла - PullRequest
0 голосов
/ 11 февраля 2011

Я хочу сгенерировать имя файла из введенной пользователем строки и убедиться, что оно безопасно экранировано. Например,

, если пользователь вводит /usr/bash, то вывод будет \/usr\/bash, и есливвод The great theater вывод The\ great\ theater.

1 Ответ

5 голосов
/ 11 февраля 2011

Вы уверены, что вам нужно это сделать?Это своего рода кодовый запах.Скорее всего, есть лучший способ сделать все, что вы пытаетесь сделать, чем манипулировать вашим вкладом.Как правило, правильных кавычек ваших переменных при их использовании достаточно:

$ 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

Обратите внимание, что это не такизбегайте косых черт, поскольку они обычно не являются специальными символами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...