Bash写入文件

当在bash shell中运行命令时,通常会将命令的输出打印到终端,以便可以立即看到输出内容。但是bash还提供了一个选项,可以将任何bash命令的输出“重定向”到日志文件。它可以将输出保存到文本文件中,以便以后在需要时可以对此文本文件进行查看。

方法1:仅将输出写入文件

要将Bash命令的输出写入文件,可以使用右尖括号符号(>)或双右尖符号(>>):

右尖括号(>)

右尖括号号(>)用于将bash命令的输出写入磁盘文件。如果没有指定名称的文件,则它将创建一个具有相同名称的新文件。如果该文件名称已经存在,则会覆盖原文件内容。

双右尖括号(>>)
它用于将bash命令的输出写入文件,并将输出附加到文件中。如果文件不存在,它将使用指定的名称创建一个新文件。

从技术上讲,这两个运算符都将stdout(标准输出)重定向到文件。

当第一次写入文件并且不希望以前的数据内容保留在文件中时,则应该使用右尖括号(>)。也就是说,如果文件中已经存在内容,它会清空原有数据内容,然后写入新数据。使用双右尖括号(>>)则是直接将数据附加到文件中,写入后的内容是原文件中的内容加上新写入的内容。

示例
ls命令用于打印当前目录中存在的所有文件和文件夹。但是,当运行带有直角括号符号(>)的ls命令时,它将不会在屏幕上打印文件和文件夹列表。而是将输出保存到用指定的文件中,即如下脚本代码所示:

#!/bin/bash  
#Script to write the output into a file  

#Create output file, override if already present  
output=output_file.txt  

#Write data to a file  
ls > $output  

#Checking the content of the file  
gedit output_file.txt

执行上面示例代码,得到以下结果:
仅将输出写入文件

如此处所示,ls命令的输出重定向到文件中。要将文件的内容打印到终端,可以使用以下cat命令格式:

#!/bin/bash  
#Script to write the output into a file  

#Create output file, override if already present  
output=output_file.txt  

#Write data to a file  
ls > $output  

#Printing the content of the file  
cat $output

执行上面示例代码,得到以下结果:
内容打印到终端

如果要在不删除原文件数据内容的情况下,将多个命令的输出重定向到单个文件,则可以使用>>运算符。假设要将系统信息附加到指定的文件,可以通过以下方式实现:

#!/bin/bash  
#Script to write the output into a file  

#Create output file, override if already present  
output=output_file.txt  

#Write data to a file  
ls > $output  

#Appending the system information  
uname -a >> $output  

#Checking the content of the file  
gedit output_file.txt

在这里,第二条命令的结果将附加到文件末尾。可以重复几次此过程,以将输出追加到文件末尾。

执行上面示例代码,得到以下结果:
将输出追加到文件末尾

方法2:打印输出并写入文件

有些人可能不喜欢使用>>>运算符将输出写入文件,因为终端中将没有命令的输出。可以通过使用tee命令将接收到的输入打印到屏幕上,同时将输出保存到文件中。

Bash脚本

#!/bin/bash  
#Script to write the output into a file  

#Create output file, override if already present  
output=output_file.txt  

#Write data to a file  
ls | tee $output

执行上面示例代码,得到以下结果:
将输出保存到文件

>运算符一样,它将覆盖文件的原内容,但也会在屏幕上打印输出。如果要在不使用tee命令删除文件内容的情况下将输出写入文件,则可以使用以下格式将输出打印到终端,参考以下代码:

#!/bin/bash  
#Script to write the output into a file  

#Create output file, override if already present  
output=output_file.txt  

echo "<<<List of Files and Folders>>>" | tee -a $output  
#Write data to a file  
ls | tee $output  

echo | tee -a $output  
#Append System Information to the file  
echo "<<<OS Name>>>" | tee -a $output  
uname | tee -a $output

执行上面示例代码,得到以下结果:
附加到文件末尾

上面示例不仅将输出附加到文件末尾,而且还将输出打印在屏幕上。


上一篇:Bash读取文件

下一篇:没有了

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程