Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将文本附加到文件中?_Linux_File_Text_File Io_Append - Fatal编程技术网

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 现在,

在Linux中,向文件追加文本的最简单方法是什么

我看了一下,但被接受的答案使用了一个附加程序(
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