Использование эха -e с обратной косой чертой (\)

The random(4) device is per-kernel, not per-jail, so it's not useful for those processes to be running in jails at all.

https://mailing.freebsd.hackers.narkive.com/iq0HeCDX/save-entropy-in-jail-environment

5
01.02.2021, 04:13
1 ответ

В Bash строки в двойных -кавычках можно использовать обратную косую черту, чтобы убедиться, что следующий символ рассматривается как литерал. То есть ввод аргумента "a\\b"приводит к передаче литеральной строки a\bв команду. Из этого мы можем сделать вывод, что в обоих случаях вы передаете hello\\worldв качестве последнего аргумента для echoи в обоих случаях -каждая пара обратных косых черт расширяется до одной буквальной обратной косой черты перед передачей к echo.

Флаг -eдля echo«разрешить [s] интерпретацию следующих символов обратной косой черты» (подробности см. в help echo). \\указан там как escape-последовательность для одной обратной косой черты, поэтому в этом случае echoделает то же самое, что Bash делал с исходной строкой, и сводит две обратные косые черты к одной. Флаг -eв основном используется для включения управляющих последовательностей, таких как \tдля символа горизонтальной табуляции или \nдля новой строки. Например:

$ echo -e 'first\tsecond\tthird'
first   second  third

Вместо этого я бы рекомендовал использовать printf. Во-первых, использование строки формата означает, что мы можем безопасно смешивать предоставленные пользователем -строки с управляющими последовательностями :

.
$ printf '%s\t%s\t%s\n' 'inject\nescape' '\\' '\evil'
inject\nescape  \\  \evil

Во-вторых, не все версии echoподдерживают -e, и неосторожное использование переменных без кавычек позволит людям изменить поведение echo:

$ injection='-e a\nb'
$ echo $injection
a
b

Третий:Эта докторская диссертация -уровень анализа .

В качестве примечания, Bash не обрабатывает обратную косую черту в одиночных -кавычках как escape-символы, поэтому мы получаем следующие результаты:

$ echo 'hello\\\\world'
hello\\\\world
$ echo -e 'hello\\\\world'
hello\\world
10
18.03.2021, 22:33

Теги

Похожие вопросы