簡體   English   中英

如何將文本附加到文件?

[英]How do I append text to a file?

在Linux中將文本追加到文件的最簡單方法是什么?

我看了一下這個問題 ,但接受的答案使用了一個額外的程序( sed )我確信應該有一個更簡單的echo或類似方法。

怎么樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM