Проблемы с tar, «удалить начальные /» и параметр --file [duplicate]

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 понимают оба.

1
02.05.2018, 21:28
2 ответа

Tar по умолчанию записывает на стандартный вывод или читает из стандартного ввода, поэтому нет необходимости в символе дефиса для обозначения стандартного вывода/стандартного ввода. Просто оставьте параметр -f. Вы получили синтаксическую ошибку для --file= -из-за пробела между =и -. Длинные опции с --записываются --param=valueбез пробелов вокруг знака равенства.

2
27.01.2020, 23:23

Старайтесь не указывать полный путь при указании пути к каталогу, используйте относительный путь, так будет проще при восстановлении.

1
27.01.2020, 23:23

Теги

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