ZDNet Japan Brand Site:
ZDNet Japan
builder
リファレンス » Linux系OS

scriptコマンドでログファイル viewだと文字化け^M

Fedora Core4でscriptコマンドで、作業ログとして取得した後にviewコマンドでログを確認すると、改行位置に ^M の文字があり、catコマンドではプロンプトの位置がずれてしまいます。

OKWave  2007年8月15日 13時00分
scriptコマンドでログファイル viewだと文字化け^M

Fedora Core4でscriptコマンドで
作業ログとして取得した後にviewコマンドでログを確認すると
改行位置に ^M の文字があり、
catコマンドではプロンプトの位置がずれてしまいます。
下記作業内容になります

[unix@local ~]$ script hoge
スクリプトを開始しました、ファイルは hoge です
[unix@local ~]$ hostname
local.com
[unix@local ~]$ date
2007年 7月 20日 金曜日 23:48:35 JST
[unix@local ~]$ exit
スクリプトを終了しました、ファイルは hoge です

[unix@local ~]$ cat hoge
スクリプトは 2007年07月20日 23時48分27秒
に開始しました[unix@local ~]$ hostname
local.com
[unix@local ~]$ date
2007年 7月 20日 金曜日 23:48:35 JST
[unix@local ~]$ exit

スクリプトは 2007年07月20日 23時48分37秒
に終了しました[unix@local ~]$

[unix@local ~]$ view hoge
スクリプトは 2007年07月20日 23時48分27秒
に開始しました[unix@local ~]$ hostname^M
local.com^M
[unix@local ~]$ date^M
2007年 7月 20日 金曜日 23:48:35 JST^M
[unix@local ~]$ exit^M

スクリプトは 2007年07月20日 23時48分37秒
に終了しました

以上、お手数お掛けいたしますが ご教授よろしくお願い致します。

良回答

手元の環境(FreeBSD + Teratermですが)で確認してみました。
私も知らなかったのですが、コンソール環境では改行を"CR+LF"で制御しているようですね。参考URLのページによれば、
--------------------
script はラインフィードやバックスペースも含め、 すべて をログファイルに書きこむ。これは普通のユーザが期待するものとは異なるかもしれない。
--------------------
とのことなので、画面制御用に出力したCRがそのまま残ってしまったのでしょう。
コマンドの出力時の改行はLFのはずなので、このあたりの変換をどこでやっているかは識者にお任せしたいと思います。

> 何故下記のように 秒 のところで改行になってしまい
これは、scriptのソースを見ればわかると思いますが、時刻情報が変数で与えられていて、変数には時刻情報+改行が含まれていることから起きている現象だと思います。英語で出力するようにすれば(環境変数LANGを"C"にするなど)きちんと見えると思います。

記事提供:OKWave

「Linux系OS」 のバックナンバー

http://japan.zdnet.com/reference/linux/story/0,3800077750,20354354,00.htm
scriptコマンドでログファイル viewだと文字化け^M

ZDNet Japan Essential Topic

ZDNet Japan ニューズレター

企業情報システムの選択、導入、運用管理に役立つ情報を毎朝メール配信します。

ニューズレターの登録・登録情報変更 »