Bash:追加内容到文件中

时间:2020-03-05 15:25:57  来源:igfitidea点击:

在Bash中,有多种方法可以将文本追加到文件中。
本文介绍了其中一些。

要将文本追加到文件,我们需要对其具有写权限。
否则,我们将收到一个权限被拒绝的错误。

使用重定向运算符('>>')添加到文件

重定向允许我们捕获命令的输出,并将其作为输入发送到另一个命令或者文件。
“ >>”重定向运算符将输出添加到给定文件。

我们可以使用许多命令将文本打印到标准输出并将其重定向到文件,其中“ echo”和“ printf”是最常用的命令。

要将文本追加到文件,请在重定向运算符后指定文件名:

echo "this is a new line" >> file.txt

当与'-e'方法一起使用时,'echo'命令解释反斜杠转义的字符,例如换行符'\ n':

echo -e "this is a new line \nthis is another new line" >> file.txt

要产生更复杂的输出,请使用“ printf”命令,该命令可用于指定输出的格式:

printf "Hello, I'm %s.\n" $USER >> file.txt

将文本追加到文件的另一种方法是使用Here文档(Heredoc)。
这是一种重定向类型,它允许我们将多行输入传递给命令。

例如,我们可以将内容传递给'cat'命令并将其添加到文件中:

cat«EOF»file.txt当前工作目录为:$PWD我们登录为:$(whoami)EOF

我们可以将任何命令的输出添加到文件中。
这是'date'命令的示例:

date +"Year: %Y, Month: %m, Day: %d" >> file.txt

使用重定向添加到文件时,请注意不要使用'>'运算符覆盖重要的现有文件。

使用“ tee”命令添加到文件

“ tee”是Linux中的命令行实用程序,可从标准输入读取并同时写入标准输出和一个或者多个文件。

默认情况下,“ tee”命令将覆盖指定的文件。
要将输出添加到文件,请使用带有“ -a”(“ --append”)选项的“ tee”:

echo "this is a new line"  | tee -a file.txt

如果我们不希望'tee'写入标准输出,请将其重定向到'/dev/null':

echo "this is a new line"  | tee -a file.txt >/dev/null

在'>>'运算符上使用'tee'命令的优点是'tee'允许我们一次将文本追加到多个文件,并与'sudo'一起写入其他用户拥有的文件。

要将文本追加到我们没有写权限的文件中,请在“ tee”之前添加“ sudo”,如下所示:

echo "this is a new line" | sudo tee -a file.txt

'tee'接收'echo'命令的输出,提升sudo权限,并写入文件。

要将文本添加到多个文件中,请指定文件作为“ tee”命令的参数:

echo "this is a new line"  | tee -a file1.txt file2.txt file3.txt