在 bash 中追加内容到文件

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

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

使用重定向操作符 (>>) 附加到文件

重定向允许您捕获命令的输出,并将其作为输入发送到另一个命令或文件。重定向操作符 >> 追加输出到指定的文件。

您可以使用许多命令来将文本打印到标准输出并将其重定向到文件, echoprintf 是最常用的命令。

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

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

-e 选项一起使用时, echo 命令将解释反斜杠转义的字符,例如 newline   \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

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

例如,您可以将内容传递给 cat 命令并将其附加到文件中, 例如下面的 mongodb 4.2 的软件仓库配置文件:

(
cat << EOF
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
EOF
) > /etc/yum.repos.d/mongodb-org-4.2.repo

您可以将任何命令的输出附加到文件中。这是 date 命令的示例:

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

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

使用 tee 命令附加到文件

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

默认情况下,该 tee 命令将覆盖指定的文件。要追加输出到文件中使用 tee-a(--append) 选项:

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

结论

在 Linux 中,要将文本追加到文件中,请使用 >> 重定向运算符或 tee 命令。