Мне нужно создать строку из полного пути POSIX (начиная с корня), чтобы она могла быть вставлена непосредственно в оболочку Unix, например bash
, например, в Terminal.app
, безнеобходимость заключать в кавычки путь.
(Я на самом деле не передаю строку в оболочку, а вместо этого нуждаюсь в ней для передачи в другую программу. Эта программа ожидает путь только в форме, котораявы получаете, когда вы перетаскиваете файл в Terminal.app
.)
. Для этого мне нужно экранировать хотя бы любые пробелы в строке, добавляя перед ними обратную косую черту.И еще несколько символов.
Например, этот путь:
/directory/-as"<>' *+
Экранируется следующим образом:
/directory/-as\"\<\>\'\ \*+
Какой безопасный алгоритм для этого преобразования?Я мог бы экранировать каждый символ, но это было бы излишним.
Кажется, что для этого не существует фреймворковой функции, поэтому мне нужно будет выполнить замену строковыми операциями.
Чтобы быть консервативным (для самых популярных оболочек), а также избегать явно ненужных выходов, какой набор символов следует избегать?