如何记录终端会话 script命令使用

发布时间 - 2025-08-17 00:00:00    点击率:

script命令用于记录终端会话的输入和输出,1. 使用script filename.txt开始记录到指定文件;2. 不带文件名时默认保存为typescript;3. 加-a选项可追加内容而非覆盖;4. 结合--timing和scriptreplay可实现带时间戳的会话回放;5. 避免输入敏感信息并注意日志安全;6. 用cat、less等工具查看记录文件,部分控制字符可能显示为乱码;该命令适用于教学演示、故障排查、操作审计和学习笔记,结束后输入exit或按ctrl+d即可完成记录,整个过程完整且易于管理。

在 Linux 或 macOS 的终端中,有时候我们需要记录下整个会话过程,比如调试命令、演示操作、排查问题或作为学习笔记。这时,

script
命令就非常有用。它能完整记录你在终端中输入和输出的所有内容,生成一个可保存的日志文件。

下面介绍

script
命令的基本用法和一些实用技巧。


什么是 script 命令?

script
是一个系统自带的工具,用于将终端会话的输入和输出全部记录到文件中。它会启动一个子 shell,然后把你在终端上看到的所有内容(包括命令、输出、提示符等)都保存下来。


基本用法

script filename.txt

这会开始记录会话,所有内容都会写入

filename.txt
。你可以自定义文件名,比如
session.log
demo.txt
等。

示例:

script my_session.log

执行后你会看到类似提示:

Script started, file is my_session.log

然后你就可以正常输入命令了,所有操作都会被记录。

结束记录时,输入:

exit

或者按

Ctrl+D

你会看到:

Script done, file is my_session.log

此时,

my_session.log
中就保存了完整的会话内容。


常用选项和技巧

1. 不带文件名,默认记录到 typescript

如果你不指定文件名:

script

它会默认创建一个名为

typescript
的文件。

2. 追加内容到已有文件

使用

-a
选项可以追加内容,而不是覆盖:

script -a my_session.log

这样多次运行不会丢失之前的记录。

3. 实时显示时间戳(高级用法)

script
本身不直接支持时间戳,但可以结合
scriptreplay
使用。先记录时加上时间信息:

script --timing=timing.log session.log

--timing
会把每条输出的时间信息记录到
timing.log
,之后可以用:

scriptreplay timing.log session.log

来“回放”整个会话过程,就像看录像一样。

4. 避免记录敏感信息

由于

script
会记录所有内容,包括你输入的密码(即使不显示),所以:

  • 不要在
    script
    会话中直接输入明文密码。
  • 如果使用
    sudo
    ,建议提前配置免密或注意日志安全。
  • 记录完成后及时检查并清理敏感内容。

5. 查看记录文件

记录完成后,可以用任意文本工具查看:

cat my_session.log
less my_session.log
vim my_session.log

注意:某些控制字符(如清屏、光标移动)可能会显示为乱码。可以使用:

cat -v my_session.log

来查看不可打印字符的可视化表示。


实际应用场景

  • 教学或演示:记录操作步骤,便于分享或回看。
  • 故障排查:保留完整的命令执行过程,方便事后分析。
  • 审计或文档:作为操作日志存档。
  • 学习笔记:记录自己练习命令的过程。

注意事项

  • script
    记录的是“终端输出”,包括颜色、光标移动等 ANSI 控制码,所以用文本编辑器打开可能看到乱码。推荐用
    cat
    less
    查看。
  • 不要长时间运行
    script
    ,避免日志文件过大。
  • 在脚本中慎用
    script
    ,因为它依赖终端交互环境。

基本上就这些。

script
命令简单但很实用,尤其适合需要保留终端操作痕迹的场景。记住开始和结束的方式,合理命名文件,就能高效地管理你的会话记录。


# linux  # typescript  # 工具  # macos  # cos  # less  # Session  # 所有内容  # 你会  # 学习笔记  # 你在  # 可以用  # 不带  # 它会  # 的是  # 是一个  # 完成后 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel怎么实现模型属性的自动加密  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在阿里云域名上完成建站全流程?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  佛山网站制作系统,佛山企业变更地址网上办理步骤?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  phpredis提高消息队列的实时性方法(推荐)  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  制作电商网页,电商供应链怎么做?  如何登录建站主机?访问步骤全解析  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  详解Oracle修改字段类型方法总结  如何确保FTP站点访问权限与数据传输安全?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel怎么为数据库表字段添加索引以优化查询  Android自定义控件实现温度旋转按钮效果  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  使用豆包 AI 辅助进行简单网页 HTML 结构设计  使用Dockerfile构建java web环境  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何快速完成中国万网建站详细流程?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何在宝塔面板中修改默认建站目录?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何在宝塔面板中创建新站点?  Linux系统命令中screen命令详解