Shell
如何使用 echo 命令和重定向運算符將換行符特殊字元放入文件中?
我想使用 echo 命令和重定向運算符創建一個文件,該文件應該由幾行組成。
我試圖在字元串中包含一個換行符“\n”:
echo "first line\nsecond line\nthirdline\n" > foo
但是這種方式不會創建包含三行的文件,而是創建一個只有一行的文件和字元串的逐字內容。
如何僅使用此命令創建具有多行的文件?
您要求在命令中使用一些語法
echo
:echo $'first line\nsecond line\nthirdline' > foo
(但也要考慮你得到的其他答案。)
該
$'...'
構造擴展了嵌入的 ANSI 轉義序列。
echo 對字元轉義的作用是實現定義的。在 echo 的許多實現中(包括大多數現代實現),預設情況下根本不檢查傳遞的字元串是否有轉義。
使用 GNU bash(作為內置)提供的 echo 以及其他一些 echo 變體,您可以執行以下操作:
echo -en 'first line\nsecond line\nthird line\n' > file
但是,聽起來確實像你想要的那樣
printf
,這對我來說更清晰,也更便攜(它具有 POSIX 定義的此功能):printf '%s\n' 'first line' 'second line' 'third line' > file
您也可以考慮使用此處的文件:
cat > file << 'EOF' first line second line third line EOF