echo -e "\\t"
передает
\ t
вecho
, потому что обратная косая черта является специальной внутри двойных кавычек вbash
. Он служит оператором экранирования (цитирования). В\\
он убегает сам.Вы можете сделать следующее:
echo -e "\\\\t"
для передачи
echo
\\ t
(echo -e "\\\ t"
также подойдет ), или вы можете использовать одинарные кавычки, в которых\
не является особенным:echo -e '\t'
Итак,
echo
- очень непереносимая команда . Даже вbash
его поведение может зависеть от окружения.Я бы посоветовал избежать этого и использовать вместо негоprintf
, с помощью которого вы можете сделать:printf 'test\n\\test\n'
Или даже решить, какие части подвергаются этим расширениям escape-последовательности:
printf 'test\n%s\n' '\test'
Или:
printf '%b%s\n' 'test\n' '\test'
% b
понимает те же escape-последовательности, что иecho
(некоторыеecho
s), в то время как первый аргументprintf
, формат, также понимает последовательности, но в немного иначе, чемecho
(больше похоже на то, что сделано на других языках). В любом случае\ n
понимают оба.
Tar по умолчанию записывает на стандартный вывод или читает из стандартного ввода, поэтому нет необходимости в символе дефиса для обозначения стандартного вывода/стандартного ввода. Просто оставьте параметр -f
. Вы получили синтаксическую ошибку для --file= -
из-за пробела между =
и -
. Длинные опции с --
записываются --param=value
без пробелов вокруг знака равенства.
Старайтесь не указывать полный путь при указании пути к каталогу, используйте относительный путь, так будет проще при восстановлении.