Значит ли это в bash, мы используем его только для экранирования символов специального значения, таких как ', ", \, $
Да. Также, например, новая строка:
echo foo
bar
# foo
# -bash: bar: command not found
echo foo \
bar
# foo
# bar
И другие случаи, такие как \ t \ e \ s \ t, в действительности точно такие же, как и "test"
Если без кавычек да, в кавычках обратная косая черта сохраняется.Некоторые утилиты UNIX используют обратную косую черту для «особых значений», но именно эти утилиты, а не bash
, дают значения этих последовательностей. Примерами являются printf
и GNU echo
, если задана опция -e
:
/bin/echo \t\e\s\t
# test
/bin/echo "\t\e\s\t"
# \t\e\s\t
/bin/echo -e "\t\e\s\t" # GNU version (will not do the same thing on Mac)
# s
# (tab)(escape)s(tab)
printf "\t\e\s\t"
# s
# (tab)(escape)s(tab)
Как напоминает @rici, bash может интерпретировать escape-последовательности в стиле C, если использовать специальные кавычки вида $'...'
:
/bin/echo $'\t\e\s\t'
# s
Вот это действительно bash
, что делает это, а не echo
.