📜  Bash写入文件

📅  最后修改于: 2020-12-29 10:26:24             🧑  作者: Mango

Bash写入文件

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

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

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

直角括号标志(>)

它用于将bash命令的输出写入磁盘文件。如果没有具有指定名称的文件,则它将创建一个具有相同名称的新文件。如果文件在那里有指定的名称,则文件的内容将被覆盖。

双直角标志(>>)

它用于将bash命令的输出写入文件,并将输出附加到文件的现有内容。如果文件不存在,它将使用指定的名称创建一个新文件。

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

以一种简单的方式,当我们第一次写入文件并且不希望以前的数据出现在文件中时,我们应该使用直角括号符号(>)。如果文件中已经存在内容,它将覆盖内容。在进一步的脚本中,我们可以使用双直角符号(>>)将数据附加到文件中。

“ ls”命令用于print当前目录中存在的所有文件和文件夹。但是,当我们运行带有直角括号符号(>)的'ls'命令时,它将不会在屏幕上print文件和文件夹列表。它将输出保存到我们指定的文件中,即如下所示:

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 > $output

#Checking the content of the file
gedit output_file.txt

输出量

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

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 > $output

#Printing the content of the file
cat $output

输出量

如果我们想将多个命令的输出重定向到单个文件而不删除可用数据,则可以使用>>运算符。假设我们要将系统信息附加到指定的文件,我们可以通过以下方式进行操作:

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 > $output

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

#Checking the content of the file
gedit output_file.txt

输出量

在这里,第二条命令的结果将附加到文件末尾。

我们可以重复几次此过程,以将输出追加到文件末尾。

方法2:正常打印输出并将其写入文件

某些人可能不喜欢使用>或>>运算符将输出写入文件,因为终端中将没有命令的输出。这就是为什么使用“ tee”命令的原因。 “ tee”命令用于将接收到的输入print到屏幕上。它可以同时将输出保存到文件中。

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

输出量

就像>运算符一样,这将覆盖文件的内容,但也会在屏幕上print输出。

如果我们要输出写入到一个文件,而无需使用tee命令删除文件的内容,我们可以使用下面的形式也将print输出到终端:

Bash脚本

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

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

echo "<<>>" | tee -a $output
#Write data to a file
ls | tee $output

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

输出量

这不仅将输出附加到文件末尾,而且还将输出print在屏幕上。