Asciinema:一款强大的终端录屏工具

最近看见一个好的终端录屏工具,现在记录一下并进行分享。

终端录屏工具asciinema是一个免费和开源的解决方案,用于记录终端会话并在网上分享。它支持在终端内直接录制,提供播放、复制粘贴和嵌入功能。安装方面,支持多种操作系统,包括Linux、MacOS和FreeBSD。使用上,通过命令行界面即可轻松录制、播放和分享终端会话。此外,asciinema还支持自托管服务器,允许用户完全掌控录制内容。对于不支持<script> 标签的网站,还可以通过动画 GIF 文件来嵌入演示。

地址:

  • asciinema.org
    a
    功能:

  • 一个免费和开源的解决方案,用于记录终端会话并在网上分享。

特点:

  • 轻松录制终端:直接在终端内进行录制。开始录制,请输入命令 asciinema rec demo.cast,结束时请按 ctrl+d 或输入 exit
  • 轻松复制粘贴:观看录制内容时,暂停播放器,然后复制粘贴您需要的内容。毕竟,这些都只是文本。
  • 轻松嵌入:轻松将 asciinema 播放器嵌入到您的博客文章、项目文档或会议演讲的幻灯片中 。

安装

  • pip/pipx
pipx install asciinema

python3 -m pip install asciinema
  • Linux

    • Arch Linux
    sudo pacman -S asciinema
    
    • Debian
    sudo apt install asciinema
    
    • Fedora
    sudo dnf install asciinema
    
    • Gentoo
    sudo emerge -av asciinema
    
  • Ubuntu

sudo apt install asciinema
  • MacOS
brew install asciinema
  • FreeBSD
cd /usr/ports/textproc/py-asciinema && make install
  • 源码安装
git clone https://github.com/asciinema/asciinema.git
cd asciinema
git checkout main
python3 -m asciinema --version

使用

记录Record

现在开始记录终端操作:

输入以下命令开始记录:

asciinema rec demo.cast

这将启动一个新的录制会话。在此会话期间,终端中显示的所有内容都将被捕捉并保存为 asciicast 格式的 demo.cast 文件。

想结束录制会话时,退出 shell 即可。这可以通过按 ctrl+d 或输入 exit 命令来实现。

重放Replay

通过以下命令回放录制内容:

asciinema play demo.cast

播放过程中,您可以按空格键暂停或恢复,或按 ctrl+c 提前结束播放。暂停的时候可以直接复制视频中的内容。

分享Sharing

虽然在终端中回放录制内容很方便,但与在互联网上与更广泛的观众分享相比,其作用相对有限。

可以在 asciinema.org 上托管您的录制内容,这是一个由 asciinema 服务器支持的终端录制专用托管平台。虽然将录制内容托管在 asciinema.org 上是可选的,但这会带来许多便利,如轻松分享和嵌入。

使用以下命令将录制内容上传到 asciinema.org:

asciinema upload demo.cast

执行该命令后,会显示一个私密链接,指向可以在其中查看录制内容的页面。可以自由地将这个链接分享给任何人。

录制页面上的播放器组件并非传统视频播放器,而是专为播放终端会话而构建的 asciinema 播放器。它允许复制其终端视图的内容,就像在普通终端中一样。可以尝试:暂停播放,选择一些文本,复制,然后粘贴到其他地方。

如果想在 asciinema.org 上管理录制内容(例如设置标题、更改终端颜色主题),需要将上传内容与 asciinema.org 用户账户关联。为此,请运行:

asciinema auth

这个命令会显示一个 URL,当在网页浏览器中打开时,该 URL 会将 CLI 与 asciinema.org 账户进行认证,确保能访问上传内容。

嵌入Embedding

asciinema 播放器可以通过在网页中嵌入 HTML <script> 标签来在任何网站上使用。这种嵌入的播放器常被用于博客文章、项目文档和会议演讲的幻灯片中。

上传到 asciinema.org 的所有录制内容都可以通过使用在录制页面上提供的脚本片段来嵌入到网站。这个脚本片段的样式如下:

要获取这个脚本,请访问录制内容的页面,点击“分享”按钮,并从“嵌入播放器”部分复制脚本。

上面的 <script> 标签被放置在这段文字的正下方,这样就生成了下面的播放器。

在这里插入图片描述

如果不想依赖 asciinema.org 来嵌入演示,可以在网站上这样使用独立的播放器:

<!DOCTYPE html>
<html>
<head>
  ...
  <link rel="stylesheet" type="text/css" href="/asciinema-player.css" />
  ...
</head>
<body>
  ...
  <div id="demo"></div>
  ...
  <script src="/asciinema-player.min.js"></script>
  <script>
    AsciinemaPlayer.create('/demo.cast', document.getElementById('demo'));
  </script>
</body>
</html>

自托管服务器

虽然 asciinema.org 是 CLI 用于上传录制内容的默认 asciinema 服务器,但如果希望完全掌控录制内容,可以选择自行托管服务器实例。

asciinema 服务器被制作为 OCI 容器镜像,可以在 ghcr.io/asciinema/asciinema-server 上找到它。

以下是一个基本的 docker-compose 示例:

services:
  asciinema:
    image: ghcr.io/asciinema/asciinema-server:latest
    ports:
      - '4000:4000'
    volumes:
      - asciinema_data:/var/opt/asciinema
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: docker.io/library/postgres:14
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_HOST_AUTH_METHOD=trust
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 2s
      timeout: 5s
      retries: 10

volumes:
  asciinema_data:
  postgres_data:

使用以下命令启动:

docker compose up

接着,通过设置 ASCIINEMA_API_URL 环境变量,将 asciinema CLI 指向您的服务器:

export ASCIINEMA_API_URL=http://localhost:4000

然后录制并上传演示:

asciinema rec demo.cast
asciinema upload demo.cast

注意,上述配置仅适用于在本地测试服务器。要了解如何以完整功能和安全的方式设置服务器,请参阅完整的服务器自托管指南。

生成GIF

在那些不支持<script> 标签但支持 <img> 标签的网站上,可以通过动画 GIF 文件来嵌入演示。

使用 agg 工具从录制文件创建 GIF:

agg demo.cast first.gif

如果您有条件使用 <script> 标签,使用 asciinema 播放器展示录制内容通常比使用 GIF 文件更佳。与 GIF 相比,播放器支持暂停、回放、复制文本,并且始终能够以最佳清晰度显示终端内容。

总结

asciinema是一个功能强大且易于使用的终端录屏工具。它允许你轻松录制、播放和分享终端会话,非常适合需要展示终端操作的场景。无论是博客文章、项目文档还是会议演讲,asciinema都能提供出色的体验。尝试使用asciinema,让你的终端操作更加高效和便捷。

你对这篇文章有什么看法?请在评论区留言分享你的想法!有相似的软件欢迎分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git 原理及使用 (带动图演示)

文章目录 &#x1f308; Ⅰ Git 安装&#x1f319; 01. Linux - centos &#x1f308; Ⅱ Git 工作区、暂存区和版本库&#x1f319; 01. 认识工作区、暂存区和版本库&#x1f319; 02. 使用 Git 管理工作区的文件 &#x1f308; Ⅲ Git 基本操作&#x1f319; 01. 创建本地仓库…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据&#xff0c; 所以&#xff0c; 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况&#xff0c;最初爬虫正常运行&#xff0c;正常抓取数据&#xff0c;一切看起来都是那么的美好&#xff0c;然而一杯茶的功夫可能就会出现错误…

YOLOv9改进策略 | Conv篇 | 利用YOLO-MS的MSBlock二次创新RepNCSPELAN4(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块)&#xff0c;我们将其用于RepNCSPELAN中组合出一种新的结构&#xff0c;来替换我们网络中的模块可以达到一种轻量化的作用&#xff…

Vue3+TS版本Uniapp:项目前置操作

作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 环境&#xff1a;使用vscode进行开发 如果一开始是使用的HbuilderX&#xff0c;请看hbuilderX创建的uniapp项目转移到vscode 为什么选择vscode&#xff1f;有更好…

Ceph 分布式文件系统 搭建及使用

一、Ceph 介绍 在当今数据爆炸式增长的时代&#xff0c;企业对于可靠、可扩展的存储解决方案的需求日益迫切。Ceph 作为一种开源的、可伸缩的分布式存储解决方案&#xff0c;正逐渐成为企业级存储领域的热门选择。Ceph是一种由Radicalbit公司开发的开源分布式存储系统&#xf…

学习微服务nacos遇到的问题

在学习微服务注册到nacos的时候&#xff0c;所有过程都正确了&#xff0c;注册也成功了&#xff0c;但是访问不了调用的地址报错出现问题。 一、引入依赖 在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖 1、springboot <pa…

【系统分析师】软件工程

文章目录 1、信息系统生命周期2、软件开发模型2.1 原型及其演化2.2 增量模型和螺旋模型2.3 V模型、喷泉模型、快速应用开发2.4 构件组装模型2.5 统一过程-UP2.6 敏捷方法 3、逆向工程4、净室软件工程 【写在前面】 记录了一系列【系统分析师】文章&#xff0c;点击下面的链接&a…

Python 全栈安全(二)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二部分&#xff1a;认证与授权 本书的第二部分是最具商业价值的部分。我这样说是因为它充满了大多数系统需要具备的实用工作流示例&#xf…

Linux 系统systemd(pid=1)占用80端口导致web程序无法启动

背景 linux系统内安装了例如nginx的网站程序&#xff0c;但是无法正常启动&#xff0c;netstat 查看下 80端口被 systemd 占用。 处理方法 注意务必组好快照备份后再操作。 做好备份后将/usr/lib/systemd/system 内http相关的配置文件重命名后重启主机恢复正常。 重启后正常 sy…

分类神经网络2:ResNet模型复现

目录 ResNet网络架构 ResNet部分实现代码 ResNet网络架构 论文原址&#xff1a;https://arxiv.org/pdf/1512.03385.pdf 残差神经网络(ResNet)是由微软研究院的何恺明、张祥雨、任少卿、孙剑等人提出的&#xff0c;通过引入残差学习解决了深度网络训练中的退化问题&#xff…

【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

文章目录 一、视频与 JPG 静态图片互相转换1、视频转静态图片2、视频转多张静态图片3、多张静态图片转视频 二、视频与 GIF 动态图片互相转换1、视频转成 GIF 动态图片2、 GIF 动态图片转成视频 一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 …

云原生Kubernetes: K8S 1.29版本 部署ingress-nginx

目录 一、实验 1.环境 2. K8S 1.29版本 部署ingress-nginx 二、问题 1.kubectl 如何强制删除 Pod、Namespace 资源 2.创建pod失败 3.pod报错ImagePullBackOff 4.docker如何将镜像上传到官方仓库 5.创建ingress报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表…

数据结构 - 顺序表

一. 线性表的概念 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的…

SpringBoot 集成 WebSocket

前言 最近在做一个 WebSocket 通信服务的软件&#xff0c;所以必须跟着学一学。 1、WebSocket 概述 一般情况下&#xff0c;我们的服务器和服务器之间可以发送请求&#xff0c;但是服务器是不能向浏览器去发送请求的。因为设计之初并没有想到以后会出现服务端频繁向客户端发送…

【代码随想录刷题记录】LeetCode34在排序数组中查找元素的第一个和最后一个位置

题目地址 最近忙活实验&#xff0c;实在没空刷题&#xff0c;这个题对我来说难度还蛮大的&#xff0c;尤其是理解那个找左边界和找右边界的条件&#xff0c;后来我按照自己的理解写了出来&#xff08;感觉给的答案解释起来有点反认识规律&#xff09;&#xff0c;所以我从0开始…

三轴加速度计LIS2DUX12开发(2)----静态校准

三轴加速度计LIS2DUX12开发.2----静态校准 概述硬件准备视频教学样品申请源码下载六位置法的标定方案旋转加速度计以找到极值计算偏移和灵敏度应用校准参数注意事项串口中断变量定义主程序流程串口发送定义演示 概述 最近在弄ST和瑞萨RA的课程&#xff0c;需要样片的可以加群申…

木马——文件上传

目录 1、WebShell 2.一句话木马 靶场训练 3.蚁剑 虚拟终端 文件管理 ​编辑 数据操作 4.404.php 5.文件上传漏洞 客户端JS检测 右键查看元素&#xff0c;删除检测代码 BP拦截JPG修改为php 服务端检测 1.MIME类型检测 2.文件幻数检测 3.后缀名检测 1、WebShell W…

【Hadoop】-HDFS的Shell操作[3]

目录 前言 一、HDFS集群启停命令 1.一键启停脚本可用 2.独立进程启停可用 二、文件系统操作命令 1、创建文件夹 2、查看指定目录下内容 3、上传文件到HDFS指定目录下 4、查看HDFS文件内容 5、下载HDFS文件 6、拷贝HDFS文件 7、追加数据到HDFS文件中 8、HDFS数据移…

【信号处理】基于CNN的心电(ECG)信号分类典型方法实现(tensorflow)

关于 本实验使用1维卷积神经网络实现心电信号的5分类。由于数据类别不均衡&#xff0c;这里使用典型的上采样方法&#xff0c;实现数据类别的均衡化处理。 工具 方法实现 数据加载 Read the CSV file datasets: NORMAL_LABEL0 , ABNORMAL_LABEL1,2,3,4,5 ptbdb_abnormalpd.…

使用JavaScript收集和发送用户设备信息,后端使用php将数据保存在本地json,便于后期分析数据

js代码部分 <script> // 之前提供的JavaScript代码 fetch(https://api.ipify.org?formatjson).then(response > response.json()).then(data > {const deviceInfo {userAgent: navigator.userAgent,platform: navigator.platform,language: navigator.language,…