Bash:写入文件

编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读写文件。

本文介绍了如何使用重定向操作符和Bash将文本写入Bash中的文件。 tee 命令。

使用重定向运算符写入文件

在Bash中,输出的重定向使您可以捕获命令的输出并将其写入文件。

将输出重定向和写入文件的一般格式如下:

output > filename 
output >> filename 
  • > 重定向运算符将输出写入给定文件。 如果文件存在,则将其截断为零长度。 否则,将创建文件。 使用此运算符时请格外小心,因为您可能会覆盖重要文件。
  • >> 重定向运算符将输出附加到给定文件。 如果文件不存在,则创建该文件。

您需要对该文件具有写权限。 否则,您将收到拒绝权限错误。

这是一个简单的示例,显示了如何重定向 echo 命令到文件:

echo "this is a line" > file.txt

为防止覆盖现有文件,请在以下选项中启用“ noclobber”选项 set 内置:

set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file

>| 运算符允许您覆盖Bash的“ noclobber”选项

set -o noclobberecho "this is a line" >| file.txt

>> 运算符将输出附加到文件末尾,而不是覆盖文件:

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

使用 printf 如果要创建复杂的输出,请执行以下命令:

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

如果要将多个行写入文件,请使用“此处”文档(Heredoc)重定向。

例如,您可以将内容传递给 cat 命令并将其写入文件:

cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

要添加行,请更改 >>> 文件名之前:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

您可以将任何命令的输出写入文件:

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

输出 date 命令将被写入文件。

使用 tee 命令#

tee 命令从标准输入读取并同时写入标准输出和一个或多个文件。

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

tee 命令的默认行为是覆盖指定的文件,与 > 操作员。 要将输出附加到文件,请使用 -a--append) 选项:

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

如果你不想 tee 写入标准输出,您可以将其重定向到 /dev/null

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

要将文本写入多个文件,请指定文件作为 tee 命令:

echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

的另一个优势 tee 命令是您可以将其与 sudo 并写入其他用户拥有的文件。 要将文本附加到您没有写权限的文件中,请添加前缀 sudo 之前 tee

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

echo 命令输出作为输入传递给 tee,这将提升sudo权限并将文本写入文件。

结论#

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

如果您有任何问题或反馈,请随时发表评论。

bash终端

Sidebar