在 bash 中追加内容到文件
在 Bash 中,有多种方法可以将文本追加到文件中。本文介绍了其中的一些方法。
要将文本追加到文件,您需要具有文件写入权限。否则,您将收到一个权限被拒绝的错误。
使用重定向操作符 (>>
) 附加到文件
重定向允许您捕获命令的输出,并将其作为输入发送到另一个命令或文件。重定向操作符 >>
追加输出到指定的文件。
您可以使用许多命令来将文本打印到标准输出并将其重定向到文件, echo
和 printf
是最常用的命令。
要将文本追加到文件,请在重定向运算符后指定文件名:
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
命令。