如何将 Linux/Unix 命令的输出保存到文件
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | Linux shell 脚本 |
先决条件 | bash/sh/ksh 或 POSIX shell |
操作系统兼容性 | BSD • Linux • macOS • Unix • Unix |
预计阅读时间 | 3 分钟 |
- >是输出重定向符号。
- >>是附加输出重定向符号。
将命令输出保存到文件的语法
语法是:
command > filename
示例:将 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
或者使用 more 命令,如下所示,达到相同目的:
$ more file-lists.txt
示例:grep 文本并保存到文件
您可以使用grep 命令扫描日志文件并保存到文件中。在此示例中,我将搜索/扫描名为 /var/log/httpd/access_log 的日志文件,查找垃圾邮件发送者的 IP 地址“1.2.3.4”,并将其保存到名为 spam-log.txt 的文件中:
# grep '1.2.3.4' /var/log/httpd/access_log > /root/spam-log.txt
如果您的日志文件太大,请在后台使用与号 (&) 运行作业(grep 命令),如下所示:
# grep '1.2.3.4' /var/log/httpd/access_log > /root/spam-log.txt &
保存命令输出并将其附加到文件的语法
操作>符总是覆盖现有的输出文件。要将命令的输出附加到同一个文件,请使用>>操作符,如下所示:
command >> filename
在此示例中,运行两个名为和的命令date,who并将输出保存到名为 demo.txt 的同一个文件中:
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
总结
您学习了如何在 Linux 和类 Unix 系统上将终端输出保存到文件中。我们可以简单地重定向输出:
$ command > file
要将数据附加到现有文件:
$ command >> file
对于 stderr(标准输出),我们使用以下内容:
下面是我们使用 tee 命令发送 Linux 终端控制台上显示的 stderr 和 stdout(输出)以及文件中显示的内容的方法:
有关更多信息,请使用 man 命令/help 命令查看以下手册页:
$ command &> file
## append ##
$ command &>> file
$ /path/to/command arg1 arg2 2>&1 | tee log.txt
$ man bash
$ man tee
$ man ksh
$ man zsh
$ man tcsh