如何将Linux/Unix命令的输出保存到文件中

时间:2020-01-09 10:40:39  来源:igfitidea点击:

如何使用命令提示符或POSIX shell(例如SH/KSH/BASH)将Linux/Unixls命令的输出保存到名为list.txt的文件中? Bash/KSH和POSIX Shell提供了文件重定向选项,该命令使用以下两个运算符将命令输出重定向到文件:

  • ">"是输出重定向符号。
  • " >>"是追加输出重定向符号。

将命令输出保存到文件的语法

语法为:

命令>文件名

示例:将date命令输出保存到名为output.txt的文件中

在此示例中,将date命令的输出保存到名为output.txt的文件中:

$ date > output.txt

示例:运行Unix/Linux命令并将输出保存到文件

请注意,如果file-lists.txt文件不存在,则会创建该文件。
并且如果文件file-lists.txt文件退出则被覆盖。

可以将command替换为要在Linux/Unix上运行的命令,并将filename替换为要将输出保存(定向)到的文件。
例如,运行ls命令并将其输出存储在名为file-lists.txt的文件中:

ls -l /bin > file-lists.txt

要查看file-list.txt的内容,请使用cat命令,如下所示:

cat file-lists.txt

或出于相同目的使用如下的NA命令:

more file-lists.txt

示例:grep文本并保存到文件

您可以使用grep命令扫描日志文件并将其保存到文件。
在此示例中,我将搜索/扫描名为/var/log/httpd/access_log的日志文件以查找垃圾邮件发送者IP地址1.2.3.4,并将其保存到名为spam-log.txt的文件中:

# command must be run as root #
grep '1.2.3.4' /var/log/httpd/access_log  > /root/spam-log.txt

如果您的日志文件太大,请在后台用&号(&)运行作业(grep命令),如下所示:

# command must be run as root #
grep '1.2.3.4' /var/log/httpd/access_log  > /root/spam-log.txt &

保存命令输出并将其追加到文件的语法

">"运算符始终会覆盖现有的输出文件。
要将命令的输出追加到同一文件,请使用>>运算符,如下所示:command >> filename'在此示例中,运行两个名为datewho`的命令,并将输出保存到同一文件中,称为demo。
文本:

echo "Test" > demo.txt
## Append to same file ##
echo "A log file by $USER on $HOSTNAME" >> demo.txt
who >> demo.txt
cat demo.txt

重定向标准错误并将其输出到文件的语法

用于重定向标准错误以及在bash/ksh或POSIX shell上输出的基本语法如下:

command-name &>filename
 
## POSIX syntax ##
command-name >cmd.log 2>&1