Linux Shell製作錄製回放功能指令碼

2022-09-26 15:00:27 字數 1989 閱讀 6457

不久前在書上看到兩個很有趣的命令——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"ifdjkqeyxu = "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.l程式設計客棧og"

sesfile="$filename.session"

if [ -e $sesfile ]; then

scriptreplay $logfile $seifdjkqeyxusfile

echo

else

echo "$filename is not exsit!"

fi二、程式分析

首先來說說這兩個檔案分別是用來幹什麼的吧,record.sh是用來記錄你所執行的命令和螢幕的輸出的,而replawww.cppcns.comy.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即可。

非常有意思吧!

本文標題: linux shell製作錄製回放功能指令碼

本文位址: /os/linux/215292.html

Linux Shell製作錄製回放功能指令碼

一 實現 檔案 record.sh bin bash filename record.sh read p please input the sesson filename you want to creat filename sesfile filename.session logfile file...

C語言通訊錄製作

要求 有完整的介面,增刪改查功能。人員資訊包括編號 姓名 住址 工作單位 職位。使用文字文件儲存和讀取。主要知識 結構體,檔案的操作,字串陣列的比較等 實現 include include includetypedef structperson void menu 選單 void addperson...

Centos記錄製作本地YUM源

安裝httpd,createrepo並進行啟動 yum install y httpd createrepo通過df命令找到當前系統目錄空間最大的路徑 df h在最大的目錄建立儲存對應rpm資源的目錄 mkdir centos7 yum在 var www html目錄下,建立鏈結centos7 yu...