Как ввести в файл следующее содержимое:
Hi
abcd
Я пробовал использовать echo "Hi\nabcd" >> ab.txt
, но в файле он записан как есть ( \n
включен вместо новой строки)
решение1
Вам нужно сказать, echo
чтобы соблюдать последовательности побегов.
echo -e "Hi\nabcd" >> ab.txt
решение2
решение3
Я бы предложил использоватьФункция оболочки bash называетсяЗдесь Документ. Кажется, это самая элегантная форма для достижения того, что вы описываете. Самое главное, что многострочное содержимое выглядит точно так же, как оно выглядит в выходном файле (в отличие от нечитаемых, длинных, \n
разделенных строк).
cat > ab.txt <<EOL
Hi
abcd
EOL
Вот EOL
маркер, который указывает, какую оболочку следует искать, чтобы найти конецздесь документ. Вы можете произвольно выбрать слово, которое позволит вам выбрать что-то, что не будет случайно конфликтовать сздесь документсамо содержимое. Хорошая вещь, что вы можете иметь оболочку, ${VARIABLES}
которая будет заменена. Если это каким-то образом нежелательно, вы всегда можете обернуть открывающее (только открывающее!) слово-маркер кавычками ( '
), чтобы предотвратить это.
Лично я часто использую это в сценариях инициализации для создания небольших файлов конфигурации при настройке моей среды, например:
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
решение4
Вы также можете поиграть в игры с цитированием:
% echo 'Hi
> abcd' >> ab.txt
Вы вводите это в bash, нажимая "Enter" после "Hi". Bash использует '>' как продолжение командной строки для меня. Я не мог избежать индивидуального возврата с помощью обратной косой черты по какой-то причине.