Linux Shell制作录制回放功能脚本

不久前在书上看到两个很有趣的命令——script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还只是一般的文本文件,文件的大小非常小,真是非常有意思。下面是本人写的两个shell程序,来方便进行这个有趣并有意义的操作。

一、实现代码

文件:Record.sh

#! /bin/bash
# Filename:Record.sh 

read -p "Please input the sesson filename you want to creat: " filename; 

sesfile="$filename.session"
logfile="$filename.timing.log" 

if [ -e $sesfile ];then
  echo "$sesfile is Exsit,Creat session file fault!";
  read -p "If you want to reload the file? [Y/N]: " flag;
  if [ "$flag" = "Y" ];then
    rm $sesfile $logfile;
    script -t 2> $logfile -a $sesfile;
  else
    echo "Nothing to do!";
  fi 

else
  script -t 2> $logfile -a $sesfile;
fi

文件:Replay.sh

#! /bin/bash
# Filename:Replay.sh 

read -p "Please input the session filename: " filename
logfile="$filename.timing.log"
sesfile="$filename.session"
if [ -e $sesfile ]; then
  scriptreplay $logfile $sesfile
  echo
else
  echo "$filename is NOT Exsit!"
fi

二、程序分析

首先来说说这两个文件分别是用来干什么的吧,Record.sh是用来记录你所执行的命令和屏幕的输出的,而Replay.sh是用来回放Record.sh所录制的内容的。

在Record.sh中,首先要求你输入一个用来保存信息的文件名,如output,然后在程序中创建两个文件,文件名为你所输入的文件名加上不同的后缀形成,如output.timing.log和output.session,然后检查所输入的文件是否已存在,若存在,则询问是否以新的文件覆盖旧的文件,若是,则删除原有文件,创建新的文件并写入数据,若否,则不做任何工作。Replay.sh中输入一个文件名,首先判断该文件是否存在,存在则播放。

在Record.sh中,可以看到script的参数是两个文件,为了便于辨认,我在输入的文件名加上了特定的后缀,即使在Linux上,文件后缀是没意义的,其中一个后缀的.timing.log,用于存储时序信息,描述每一个命令在何时运行,另一个文件,后缀为.session,用于存储命令输出。有了这两个文件就可以实现播放功能,这就有点像大家熟悉的Windows下的lrc歌词文件的播放功能吧,个人觉得。

而由于有两种输出,所以就要用数据流重定向,把不同的输出流输出不同的文件中,在Record.sh中我们也可以看到,我们用2>把时序信息通过stderr写入文件*.timing.log,通过>把命令执行信息写入文件*.session。

而Replay.sh则相对简单,它只需要判断输入的文件是否存在,就可以进行播放。如你想播放上面Record.sh中制作的文件,则只需要输入output即可。

非常有意思吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • linux shell脚本学习录制与回放终端会话

    复制代码 代码如下: amosli@amosli-pc:~/learn$ script -t 2> timing.log -a output.session#开始录制Script started, file is output.sessionamosli@amosli-pc:~/learn$ hello1No command 'hello1' found, did you mean: Command 'hello' from package 'hello-debhelper' (main) Co

  • 怎样在Linux上录制你的终端操作及回放

    前言 假设你是个靠谱先生,每当亲朋好友遇到与Linux有关的各种问题时,总是第一时间向你求助请教.有人会问你如何安装和配置某个工具,这时候你就想告知具体的步骤.可要是对方不在你跟前,又该如何是好呢?解决办法可能有好多种,比如说可以将具体步骤记入文档,然后通过电子邮件发过去:或者打电话,详细告知对方,等等,但是最明确无误的解决办法还是你亲自演示一番.要是演示只需要一个终端,那么最好的办法就是录制你的终端操作. 录制一个终端操作可能是一个帮助他人学习 Linux .展示一系列正确命令行操作的和分享知

  • Linux Shell制作录制回放功能脚本

    不久前在书上看到两个很有趣的命令--script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还只是一般的文本文件,文件的大小非常小,真是非常有意思.下面是本人写的两个shell程序,来方便进行这个有趣并有意义的操作. 一.实现代码 文件:Record.sh #! /bin/bash # Filename:Record.sh read -p "Please input the sesso

  • Shell脚本制作的终端会话回放功能脚本分享

    不久前在书上看到两个很有趣的命令--script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还只是一般的文本文件,文件的大小非常小,真是非常有意思.下面是本人写的两个shell程序,来方便进行这个有趣并有意义的操作. 一.实现代码 文件:Record.sh 复制代码 代码如下: #! /bin/bash  # Filename:Record.sh    read -p "Please

  • Linux shell脚本基础学习详细介绍(完整版)第1/2页

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Linux 脚本编写基础 ◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序.当编辑好脚本时,如果要执行该脚本,还必须使其可执行.要使脚本可执行:编译

  • Linux Shell脚本编程初体验

    通常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并且自动化,我们可以使用shell脚本. 某些编程语言,像

  • Linux Shell 自动交互功能实现

    需求背景: 近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大量重复性操作,既不能带来有效学习能力提升,同时也会极大产生不确定性,引发工作效率下降,那么如何自动化完成某些操作呢,尤其是带有交互功能的步骤呢,例如需要输入账号密码? 1. EOF 多文本输入 需求案例 1 新交付了一批机器,每台机器只分配了一块落盘 ,现在根据需求对该盘进行分区并实现挂载,如何实现?

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用mget结合正则表达式下载文件 #获取昨天日期,为后面下载使用 T=`date -d yesterday +%Y%m%d` 4.连接FTP服务器,到指定路径下下载文件 ftp -n <<EOF open $ip user $u $p binary cd /hour #远程服务器文件目录 lcd /h

  • Linux shell脚本输出日志笔记整理(必看篇)

    1.日志方法简介: #日志名称 log="./upgrade.log" #操作日志存放路径 fsize=2000000 #如果日志大小超过上限,则保存旧日志,重新生成日志文件 exec 2>>$log #如果执行过程中有错误信息均输出到日志文件中 #日志函数 #参数 #参数一,级别,INFO ,WARN,ERROR #参数二,内容 #返回值 function zc_log() { #判断格式 if [ 2 -gt $# ] then echo "parameter

  • linux shell实现守护进程脚本

    嵌入式初学者,第一次上传代码.昨天做了一个udhcpd与udhcpc的守护,目前只会用shell模仿编写,还有什么方法可以做守护呢? #! /bin/sh #进程名字可修改 PRO_NAME=udhcpc WLAN=ra0 while true ; do # 用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l` # echo $NUM # 少于1,重启进程 if [ "${NUM}" -lt &

  • Linux Shell 脚本编程入门教程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

  • Linux Shell脚本实现检测tomcat

    Linux Shell脚本检测tomcat并自动重启 后台运行命令 sh xxx.sh & 查看后台任务:jobs 召唤到前台:fg jobs编号 可以删掉while循环的代码放到crontab里面定时执行,可以将脚本直接后台运行, #!/bin/bash while [ true ] do url="http://www.jb51.net/"; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk

随机推荐