2011-09-25 134 views
1

我是unix脚本的新手,我想要做以下操作,但我不知道如何继续。unix中的密钥登录

我想记录在终端上给定的某些命令集的输入和输出到一个跟踪文件。我应该能够打开和关闭它。

例如

switch trace on 

user:echo Hello World 

user:Hello World 

switch trace off 

然后跟踪日志文件,例如trace.log中,它的内容应该是我能想到做

echo Hello World 

Hello World 

一件事是使用set -x,重定向其输出到一些文件,但无法找到一个方法来做到这一点。我做了man setman -x但我没有找到任何条目。也许我太天真了,但一些指导将会非常有帮助。 我正在使用bash shell。

+1

查看命令'script'。 –

回答

3

参见script(1),“制作终端会话的打字稿”。要在文件xyz中启动新的转录本:script xyz。要添加到文件xyz中的现有抄本:script -a xyz

会有几条架空线,如Script started on ...Script done on ...,您可以使用awk或sed在打印输出时过滤掉。 -t开关允许实时播放。

我觉得有可能是最近关于如何在less显示抄本一个问题,虽然我不能找到它,this questionthis one解决一些查看包含控制字符的文件相同的问题。 (捕获的转录常常含有ANSI控制序列和通常含有返回以及换行符。)

更新1 Perl程序script-declutter是可用于从脚本日志删除特殊字符。
该程序是在链接中间附近找到的约45行代码。将这些代码行保存在名为script-declutter的文件中,保存在PATH的子目录中(例如,$HOME/bin(如果它位于您的搜索路径上),否则(例如)/usr/local/bin),并使文件可执行。在此之后,像

script-declutter typescript > out 

命令会同时将结果提交out删除文件typescript, 最特殊字符。

+0

谢谢!只是另一个天真的问题,为什么我找不到男人进入-x或+ x – SnoopyMe

+0

缺乏持久性? :)在为任何bash内置命令输入'man set'(或'man builtins'或'man')后,搜索'xtrace'(请记住'set -o xtrace'与'set -x '),然后再查看20行左右的'set -x'文档。请注意,set -x会打开命令的回显,这对脚本调试很有用,但不会影响命令输出或记录。 –

+0

我的bash没有man或者xtrace的入口,但是设置-x的作品...? – SnoopyMe