在日常使用电脑时,很多人会通过终端执行各种命令来管理文件、调试程序或配置系统。时间一长,这些操作的输出信息就可能变得重要,比如排查问题时需要查看历史日志。这时候,把终端里的内容保存下来就成了刚需。
为什么需要导出终端日志
你有没有遇到过这种情况:花了一小时在终端里跑完一个部署脚本,结果出了错,你想回头看看哪一步出了问题,却发现滚动缓冲区早就被新输出刷没了?或者你需要把某个命令的执行结果发给同事协助分析,但复制粘贴总是漏掉部分内容?
这时候直接导出完整的日志文件就方便多了。不仅能完整保留输出内容,还能随时查阅、归档或共享。
使用 script 命令全程记录
Linux 和 macOS 都自带一个叫 script 的工具,可以把你进入终端之后的所有输入和输出全部录下来。
比如你想记录一次服务器检查过程,可以直接运行:
script server_check.log
回车后你会看到“Script started”,接下来你输入的所有命令和它们的输出都会被写进 server_check.log 文件里。等你操作完,输入 exit 或按 Ctrl+D 结束录制,系统会提示“Script done”。
这个 log 文件就是纯文本,可以用 vim、cat 或任何编辑器打开,也可以直接发邮件附上。
重定向单条命令的输出
如果你只关心某一条命令的结果,比如 df -h 查看磁盘使用情况,不需要全程录像,用输出重定向更轻便。
df -h > disk_usage.log
这样就把结果存到了 disk_usage.log 里。如果想追加内容而不是覆盖原文件,用两个大于号:
df -h >> disk_usage.log
同样适用于其他命令,比如 ps aux、netstat -an 或自定义脚本。
结合 tee 同时显示和保存
有时候你既想看到命令输出,又想把它存下来。这时候 tee 就派上用场了。
ls -la /var/log | tee var_log_files.txt
这条命令会在终端打印目录列表的同时,把内容写入指定文件。适合做演示或边查边存的场景。
macOS 终端自带的日志功能
如果你用的是 macOS 自带的 Terminal.app,其实还有个隐藏技能。打开终端后,点击顶部菜单的“Shell” → “Export Text As…”(有的版本是“Save Output As…”),就能把当前窗口的所有可见内容保存成文本文件。
这个方法不需要记命令,适合临时救急,尤其是对刚接触终端的新手来说更直观。
Windows 用户怎么办
用 Windows 的朋友也不用担心。在 CMD 或 PowerShell 中都可以用类似的重定向语法。
比如在 CMD 里:
ipconfig > network_info.txt
在 PowerShell 中更是灵活:
Get-Service | Out-File -FilePath services.txt
PowerShell 还支持 Start-Transcript 和 Stop-Transcript,类似 Linux 的 script 命令,能完整记录会话过程。
小技巧:自动命名带日期的日志文件
经常导出日志的话,手动改文件名容易混乱。可以用时间戳自动命名,避免覆盖。
script deployment_$(date +%Y%m%d_%H%M).log
这样生成的文件名就像 deployment_20240315_1430.log,一目了然,方便后期整理。