我是unix脚本的新手,我想做以下操作,我不知道如何继续。
我想将终端上给定的某些命令集的输入和输出记录到跟踪文件中。我应该可以打开和关闭它。
E.g。
switch trace on
user:echo Hello World
user:Hello World
switch trace off
然后是跟踪日志文件,例如trace.log,它的内容应该是
echo Hello World
Hello World
我能想到的一件事是使用set -x
,将其输出重定向到某个文件,但找不到办法。我做了man set
或man -x
,但我没有找到任何条目。也许我太天真了,但是一些指导会非常有帮助。
我正在使用bash shell。
答案 0 :(得分:3)
参见script
(1),“制作终端会话的打字稿”。要在文件xyz:script xyz
中开始新的记录。要添加到文件xyz中的现有记录:script -a xyz
。
会有一些架空线,例如Script started on ...
和Script done on ...
,您可以使用awk或sed过滤掉打印输出。 -t开关允许实时播放。
我认为最近可能有关于如何在less
中显示成绩单的问题,虽然我找不到它,但this question和this one解决了一些问题查看包含控制字符的文件的问题。 (捕获的成绩单通常包含ANSI控制序列,通常包含Return和Linefeeds。)
更新1 Perl程序script-declutter可用于从脚本日志中删除特殊字符。
该程序在链接中间附近找到大约45行代码。将这些代码行保存在名为script-declutter
的文件中,位于PATH上的子目录中(例如,$HOME/bin
如果它位于您的搜索路径上,否则(例如)/usr/local/bin
)并制作文件可执行文件。之后,像
script-declutter typescript > out
将删除文件typescript
中的大多数特殊字符,
将结果定向到文件out
。