[英]How do I append text to a file?
怎么樣:
echo "hello" >> <filename>
使用>>
運算符將在文件末尾附加數據,而使用>
將覆蓋文件的內容(如果已存在)。
您也可以以相同的方式使用printf
:
printf "hello" >> <filename>
請注意,使用上述內容可能會有危險。 例如,如果您已經有一個文件,並且需要將數據附加到文件末尾而忘記添加最后一個>
文件中的所有數據都將被銷毀。 您可以通過在.bashrc
設置noclobber
變量來更改此行為:
set -o noclobber
現在,當您嘗試echo "hello" > file.txt
您將收到一條警告,指出cannot overwrite existing file
。
要強制寫入文件,您現在必須使用特殊語法:
echo "hello" >| <filename>
您還應該知道,默認情況下, echo
會添加一個尾隨的換行符,可以使用-n
標志來抑制它:
echo -n "hello" >> <filename>
參考
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
基本上,您可以將所需的任何文本轉儲到文件中。 CTRL-D發送一個文件結束信號,終止輸入並返回shell。
其他可能的方法是:
echo "text" | tee -a filename >/dev/null
-a
將附加在文件的末尾。
如果需要sudo
,請使用:
echo "text" | sudo tee -a filename >/dev/null
跟進接受的答案。
如果在腳本中使用此項,則需要除CTRL-D之外的其他內容來指定結尾 。 試試這個:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
這會將文本附加到所述文件(不包括“EOF”)。
它利用了這里的文件(或heredoc) 。
但是,如果您需要sudo附加到指定的文件,如果您直接在命令行上鍵入,則由於I / O重定向而使用heredoc會遇到麻煩。
直接在命令行上鍵入時,此變體將起作用:
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
或者您可以使用tee
來避免在使用帶有cat的heredoc時看到的命令行sudo問題:
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.