Text-Processing

在新行下重定向內容(無需進一步的語法或參數)

  • February 9, 2018

我嘗試了以下方法將內容附加到文件:

printf "\nsource ~/script.sh" >> /etc/bash.bashrc
echo -e "\nsource ~/script.sh" >> /etc/bash.bashrc
cat >> "/etc/bash.bashrc" <<< "source ~/script.sh"

這三種方式都有效。我發現這裡的cat字元串不太舒服,因為需要從最後閱讀它(在cat將其附加[end]到之後[start])。

所有方式都不會自動換行和\n語法,printf並且echo是我個人作為最後手段使用的一種。此外,我不知道有什麼方法可以為 herestring 添加換行符,並且在本文件中沒有找到這種方法。

我尋求的是一種無需添加任何參數或語法即可自動下線的實用程序。我試圖閱讀 nix 文本處理實用程序,但沒有找到與我所尋求的內容相似的內容。你知道這樣的實用程序嗎?

你不需要寫cat“錯誤的方式”這一行,這很好用(當然這裡字元串中的箭頭仍然指向一個奇怪的方向):

$ cat <<< "some text" >> testfile
$ cat testfile
some text

正如評論中提到的,here-string 在末尾添加了一個換行符,而 withprintfechoyou\n 在字元串的前面使用。 echo通常會添加尾換行符,就像這裡的字元串一樣,所以如果你只需要它,echo應該沒問題(而且它是大多數 shell 中的內置函式。)

您的所有命令與換行符的工作方式略有不同

cat >> file <<< "string"        # newline at end
printf "\nstring" >> file       # newline at beginning
echo -e "\nstring" >> file      # newline at beginning and at the end

坦率地說,我認為習慣這種\n表示法會更好,但如果你不喜歡它,這裡總是有文件(這裡包括前導和尾隨換行符):

cat >> file <<EOF

some text
EOF

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