Shell

如何使用 echo 命令和重定向運算符將換行符特殊字元放入文件中?

  • March 16, 2021

我想使用 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

引用自:https://unix.stackexchange.com/questions/191694