Bash:写入文件

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

本文档介绍如何使用重定向运算符和tee命令,或将bash脚本中的文本写入文件。

使用重定向操作符写入文件

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

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

Output filename

Output filename

重定向运算符将输出写入指定的文件。如果文件存在,则修剪到零长度文件。否则,将创建文件。使用此运算符时要特别小心,因为它可能会复盖重要文件。

重定向运算符将输出附加到指定的文件。如果文件不存在,则将创建该文件。

需要对此文件具有写权限。否则,将出现拒绝权限错误。

以下是一个简单的示例,说明如何将echo命令的输出重定向到文件。

Echo ‘this is a line’ file.txt

使用内置set激活“noclobber”选项,以避免复盖现有文件。

Set -o noclobber

Echo ‘this is a line’ file.txt

bash:file . txt:cannot overwrite existing文件

使用|运算符可以复盖Bash中的“noclobber”选项。

Set -o noclobber

Echo ‘this is a line’ | file.txt

运算符不复盖文件,而是将输出附加到文件末尾。

Echo ‘this is a line’ file.txt

使用Printf命令创建复杂的输出。

Printf ‘ hello,I ‘ m% s.n ‘ $ userfile.txt

要将多行写入文件,请使用Heredoc文档(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 ‘ | teefile . txt

Tee命令的默认行为与运算符一样,是复盖指定的文件。要将输出附加到文件,请使用-a (-append)选项调用命令。

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

如果不希望Tee写入标准输出,则可以重定向到/dev/null。

echo ‘ this is a line ‘ | teefile . txt/dev/null

要将文本写入多个文件,请将文件指定为tee命令的参数。

echo ‘ this is a line ‘ | tee file _ 1 . txt file _ 2 . txt file _ 3 . txt

Tee命令的另一个优点是,可以与sudo一起使用,写入其他用户拥有的文件。要向没有写权限的文件中添加文本,请在tee前添加sudo。

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

Echo命令输出作为输入传递给tee,从而提高sudo权限,并将文本写入文件。

结论

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

如果有问题或反馈,请随时发送意见。

Linux

Command

文档

LINUX

使用Cisco Cisco Packet Tracer创建简单的网络

2022-9-22 15:01:31

LINUX

如何确定Linux中的内存使用量

2022-9-22 15:46:09

搜索