如何從命令列建立多行文件?

如何從命令列建立多行文件?

如何在文件中輸入以下內容:

Hi
abcd

我嘗試使用echo "Hi\nabcd" >> ab.txt,但在文件中它是按原樣編寫的(\n包含 ,而不是換行符)

答案1

您需要告訴echo以遵循轉義序列。

echo -e "Hi\nabcd" >> ab.txt

答案2

的行為echo因外殼而異;printf的行為更加規範。

printf "Hi\nabcd" >> ab.txt

1 「不可能使用迴音可移植到所有 POSIX 系統,除非兩者都-n(作為第一個參數)和轉義序列被省略。

答案3

我建議使用bash shell 功能稱為此處文件。似乎是實現您所描述的最優雅的形式。最重要的是,多行內容看起來與輸出檔案中的內容完全相同(而不是不可讀的、長的、\n分隔的字串)。

cat > ab.txt <<EOL
Hi
abcd
EOL

這裡EOL的標記告訴 shell 應該尋找什麼來找到結尾這裡的文檔。你可以任意選擇一個詞,讓你選擇的東西不會剛好與這裡的文檔的內容本身。好處是你可以用 shell${VARIABLES}來替換。如果您不希望發生這種情況,您可以隨時用引號 ( ) 將開頭(僅開頭一個!)標記詞括起來'以防止這種情況。

我個人在設定環境時在初始化腳本中經常使用它來建立小配置文件,例如:

cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER

答案4

您也可以用引用玩遊戲:

 % echo 'Hi
> abcd' >> ab.txt

您可以透過在「Hi」後按下「Enter」鍵在 bash 中輸入該內容。 Bash 使用“>”作為我的命令繼續提示符。由於某種原因,我無法逃避帶有反斜杠的單獨返回。

相關內容