История изменений
Исправление question4, (текущая версия) :
утилиты вроде tr или sed, автоматически экранирующей строки
Если нет восклицательных знаков, можно пользоваться питоновским re.escape():
ls -1 | python -c "import re, sys; [print(re.escape(f)) for f in sys.stdin.read().split('\n') if f]"
Общий случай:
ls -1 | python -c "import sys; s = ' \!\"$&\'()*<>?[\\]\`{|}~'; d = {c : '\\\\' + c for c in s}; t = str.maketrans(d); [print(f.translate(t)) for f in sys.stdin.read().split('\n') if f]"
или
ls -1 | python -c "import sys; t = str.maketrans({c:'\\\\' + c for c in ' \!\"$&\'()*<>?[\\]\`{|}~'}); [print(f.translate(t)) for f in sys.stdin.read().split('\n') if f]"
Или отдельным скриптом:
#!/usr/bin/python3
import sys
# s = ' !"$&\'()*<>?[\\]`{|}~'; d = {c : '\\' + c for c in s}; t = str.maketrans(d)
t = {32: '\\ ', 33: '\\!', 34: '\\"', 36: '\\$', 38: '\\&', 39: "\\'", 40: '\\(', 41: '\\)', 42: '\\*', 60: '\\<', 62: '\\>', 63: '\\?', 91: '\\[', 92: '\\\\', 93: '\\]', 96: '\\`', 123: '\\{', 124: '\\|', 125: '\\}', 126: '\\~'}
[print(f.translate(t)) for f in sys.stdin.read().split('\n')[:-1]]
Исходная версия question4, :
утилиты вроде tr или sed, автоматически экранирующей строки
Если нет восклицательных знаков, можно пользоваться питоновским re.escape():
ls -1 | python -c "import re, sys; [print(re.escape(f)) for f in sys.stdin.read().split('\n') if f]"
Общий случай:
ls -1 | python -c "import sys; s = ' \!\"$&\'()*<>?[\\]\`{|}~'; d = {c : '\\\\' + c for c in s}; t = str.maketrans(d); [print(f.translate(t)) for f in sys.stdin.read().split('\n') if f]"
или
ls -1 | python -c "import sys; t = str.maketrans({c:'\\\\' + c for c in ' \!\"$&\'()*<>?[\\]\`{|}~'}); [print(f.translate(t)) for f in sys.stdin.read().split('\n') if f]"
Или отдельным скриптом:
#!/usr/bin/python3
import sys
# s = ' !"$&\'()*<>?[\\]`{|}~'; d = {c : '\\' + c for c in s}; t = str.maketrans(d)
t = {32: '\\ ', 33: '\\!', 34: '\\"', 36: '\\$', 38: '\\&', 39: "\\'", 40: '\\(', 41: '\\)', 42: '\\*', 60: '\\<', 62: '\\>', 63: '\\?', 91: '\\[', 92: '\\\\', 93: '\\]', 96: '\\`', 123: '\\{', 124: '\\|', 125: '\\}', 126: '\\~'}
[print(f.translate(t)) for f in sys.stdin.read().split('\n')[:-1] if f]