2011-09-25 87 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