Linux 如何将文本附加到文件中?
在Linux中,向文件追加文本的最简单方法是什么 我看了一下,但被接受的答案使用了一个附加程序(Linux 如何将文本附加到文件中?,linux,file,text,file-io,append,Linux,File,Text,File Io,Append,在Linux中,向文件追加文本的最简单方法是什么 我看了一下,但被接受的答案使用了一个附加程序(sed),我相信应该有一种更简单的方法来使用echo或类似的方法。怎么样: echo "hello" >> <filename> 请注意,使用上述工具可能会有危险。例如,如果您已经有一个文件,并且需要在文件末尾追加数据,而忘记添加最后一个文件中的所有数据都将被销毁。您可以通过在.bashrc中设置noclobber变量来更改此行为: set -o noclobber 现在,
sed
),我相信应该有一种更简单的方法来使用echo
或类似的方法。怎么样:
echo "hello" >> <filename>
请注意,使用上述工具可能会有危险。例如,如果您已经有一个文件,并且需要在文件末尾追加数据,而忘记添加最后一个
文件中的所有数据都将被销毁。您可以通过在.bashrc
中设置noclobber
变量来更改此行为:
set -o noclobber
现在,当您尝试执行echo“hello”>file.txt
时,您将收到一条警告,说明无法覆盖现有文件
要强制写入文件,现在必须使用特殊语法:
echo "hello" >| <filename>
参考资料
基本上,您可以将任何想要的文本转储到文件中。CTRL-D发送一个文件结束信号,终止输入并返回shell 其他可能的方法是:
echo "text" | tee -a filename >/dev/null
-a
将附加在文件末尾
如果需要sudo
,请使用:
echo "text" | sudo tee -a filename >/dev/null
跟进已接受的答案
你需要的不是什么。请尝试以下方法:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
总的来说,我更喜欢使用cat
,而不是
的公认答案,但您最好小心确保使用>
而不是
@sixty4bit-完全同意,但我认为您必须始终知道在使用shell时您在做什么,否则您可能会做一些类似于sudo rm-r/
=)比sudo rm-rf/
更好的事情在用
覆盖现有文件的内容之前,是否有要求确认的标志?总是使用这样一个标记的别名似乎是一个好主意。@sixty4bit-您可以在中添加set-o noclobber
。bashrc
那么您不能在不使用特殊语法的情况下覆盖现有文件echo“hello”>
您能给出一个调用该文件的示例吗,比如说“myFile.txt”之类的?我不确定在您的示例中它是否是或文件名。当文件需要根权限时,我如何执行此操作?@uselesscat当出现“权限被拒绝”时,我会重新检查正在运行的任何命令,然后使用sudo代码>-执行最后一个命令,前面加上sudo
。我最近发现这也适用于nano
etc(通过意外尝试nano-nano-auth
..),如果您需要使用sudo或在脚本中使用它,请参考我的下面。我不知道cat可以这样使用!就像写日记一样。也不知道ctrl-d是做什么的。谢谢大家!@桑德拉-没有使用代码>之前,太棒了。我经常做一些事情,比如cat/var/log/apache/error.log
,但权限被拒绝。这也可以通过历史记录中的id完成,例如sudo!1419
,这将在历史记录中的第1419
行作为sudo执行命令。为什么结尾处的>/dev/null?结尾处的/dev/null
阻止“文本”显示在您的控制台中。我已经使用cat
很多年了,不知道如何附加cat>
!谢谢
echo "text" | tee -a filename >/dev/null
echo "text" | sudo tee -a filename >/dev/null
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF