Как преобразовать имена файлов что-бы все команды bash работали нормально?
В Linux имена файлов могут содержать почти все символы, кроме, кажется, / и \.
Даже метасимволы (*?$&) и пробел использовать можно, хотя и не рекомендуется.
Однако для того, что-бы команды bash могли работать с таким именем файла "особые" символы нужно экранировать кавычками. Например имя команда cat ./That's my great book.txt
выдаст ошибку (нет файла), а вот cat ./That"'"s" "my" "great" "book.txt
отработает нормально.
Я не хотел-бы вызвать обсуждение такой сомнительной практики именования файлов.
Я спрашиваю как на Python-е преобразовать первое написание имени во второе?
cat ./That"'"s" "my" "great" "book.txt бредовый вариант экранирования
Нужно cat "./That's my great book.txt"
или cat ./That\'s\ my\ great\ book.txt
А вообще баш из питона вызывать не нужно.
vaut, ваш ответ в общем неверен. например ~ внутри кавычек не обрабатывается. а \ экранирует только один символ. если имя файла включает несколько не-ASCII символов подряд, то имя становится нечитаемым. но всё равно спасибо за попытку...
Aryeh Leonid R., зачем из одного скриптового языка вызывать другой скриптовый язык ??
все функции баша есть в питоне :) вместо cat можно просто прочитать файл.
pfg21, странный вопрос. например потому что на python удобно, но на удалённой машине не все нужные библиотеки установлены и приходится использовать bash. и я ведь просил помощи в конкретном вопросе, а не...
но всё равно спасибо.
Aryeh Leonid R., если используешь баш на удаленке, то его функции или проги совместимые с ним, будут тебе возвращать правильные строчки с экранирование спецсимволов или в соответствующих кавычках.
вот к примеру 3,4 имя изза наличия пробела заключено в одинарные кавычки
music/RedBearry$ ls -1
1.Пятница.mp3
2.Мечты.mp3
'3.Будь собой.mp3'
'4.Такой как все.mp3'
а у тебя получается проблема неправильного понимания работы bash.
пиши проги, так чтобы они были совместимы с баш-интерпретатором, коль его используешь.