跳转到内容

捕获终端输出

捕获是把终端输出变成可复用文本的第一步。选择与你的需求匹配的最轻路径即可。

场景 推荐命令 保留命令元数据?
查看已有命令管道的输出 command 2>&1 | sivtr
sivtr 执行一次命令 sivtr run command 部分保留本次运行信息
打开当前 shell 记录的工作 sivtr import 是,需要 shell 集成
复制最近命令块 sivtr copy out 是,需要 shell 集成
搜索保存过的输出历史 sivtr history search "query" 是,针对保存的捕获

Pipe mode 读取 stdin,启用时写入历史,并用外部编辑器打开结果。

Terminal window
ls -la | sivtr
cargo build 2>&1 | sivtr
rg "TODO" . | sivtr

适合在这些情况下使用:

  • 命令已经存在于你的 shell 历史里;
  • 你希望保持普通 shell 的管道和重定向行为;
  • 不需要 sivtr 知道原始命令是什么。

如果重要输出写到了 stderr,把 stderr 重定向到 stdout:

Terminal window
cargo test 2>&1 | sivtr

Run mode 由 sivtr 执行命令:

Terminal window
sivtr run cargo test
sivtr run git status --short

适合在这些情况下使用:

  • 你希望 sivtr 执行并捕获单个命令;
  • 你希望编辑器打开前先报告退出状态并把输出存入历史;
  • 你不想手动处理 shell 重定向。

Run mode 会合并捕获 stdout 和 stderr,并把结果存入历史。如果命令没有输出,sivtr 会提示没有捕获内容后退出。

Shell 集成会持续记录结构化命令条目。安装后打开当前 session log:

Terminal window
sivtr import

当你已经正常工作了一段时间,之后想在编辑器里打开累积的 session 时,这很有用。

安装 shell 集成:

Terminal window
sivtr init powershell
sivtr init bash
sivtr init zsh
sivtr init nushell

安装后重启 shell。

[history].auto_save 启用时,捕获输出会保存到本地 history。稍后可以搜索:

Terminal window
sivtr history search "panic"
sivtr history show 42

History 和当前 shell session log 是两套东西:history 是更长期的 SQLite 存储,session log 是按 shell 进程记录的近期结构化命令块。