PHP хорошо подходит для этого. В этом примере требуется PHP 5:
cat file.html | php -R 'echo html_entity_decode($argn);'
Perl (как всегда) ваш друг. Думаю, это подойдет:
perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
Например:
echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
С выводом:
someguy@somehost ~]$ echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
"test" & test $test ! test @ # $ % ^ & *
Во-первых, visudo (8)
- это всего лишь рекомендуемый редактор для файла / etc / sudoers
. Ничего больше. Это так, потому что он выполняет некоторую проверку синтаксиса и парсинг основных правил, чтобы предупредить вас, если вы собираетесь выстрелить себе в ногу. Это не идеально, но оказалось очень полезным.
Тем не менее, следующие строки показывают, как предоставить разрешения на выполнение для нечитаемого файла без использования уловок SETUID. Я использовал root
и / root / bin /
, но это верно для любого другого сценария, где пользователь, которому предоставлены разрешения выполнение , не имеет ] чтение доступ к файлу.
Символ #
, как обычно, означает, что команды выполняются root
,
С Python 3:
python3 -c 'import html,sys; print(html.unescape(sys.stdin.read()), end="")' < file.html
Я использую этот скрипт. Сохраните его как html2utf.py
и используйте как echo $some_html | html2utf.py
.
#!/usr/bin/env python3
"""
An alternative for `perl -Mopen=locale -MHTML::Entities -pe '$_ = decode_entities($_)'` (which you can use by `cpanm HTML::Entities`) and `recode html..`.
"""
import fileinput
import html
for line in fileinput.input():
print(html.unescape(line.rstrip('\n')))