• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:scriptコマンドでログファイル viewだと文字化け^M)

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

このQ&Aのポイント
  • Fedora Core4でscriptコマンドで作業ログを取得し、viewコマンドでログを確認すると文字化けが発生します。
  • ログファイルをcatコマンドで表示するとプロンプトの位置がずれます。
  • 下記の作業内容を実行しています。質問文章の最後には、センセーショナルなハッシュタグを付けました。

質問者が選んだベストアンサー

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.3

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

tcpip110
質問者

お礼

ご連絡ありがとうございます。 まず、『script はラインフィードやバックスペースも含め、 すべて をログファイルに書きこむ』を検証してみました。 スクリプトは 2007年07月21日 22時46分24秒 に開始しました[unix@local ~]$ ^G スクリプトは 2007年07月21日 22時46分28秒 に終了しました 結果2行目で一度だけバックスペースを叩いた結果^Gが出力されました。 また、LANGをCにして検証したところ [hiro@local ~]$ view 20070721_1 Script started on Sat Jul 21 22:52:25 2007 [unix@local ~]$ LANG=C^M [unix@local ~]$ date^M Sat Jul 21 22:52:35 JST 2007^M [unix@local ~]$ exit^M Script done on Sat Jul 21 22:52:40 2007 [unix@local ~]$ cat 20070721_1 Script started on Sat Jul 21 22:52:25 2007 [unix@local ~]$ LANG=C [unix@local ~]$ date Sat Jul 21 22:52:35 JST 2007 [unix@local ~]$ exit Script done on Sat Jul 21 22:52:40 2007 以上の事から 私の環境では 1.scriptコマンド後にLANG=Cにする事 2.catコマンドでログを確認する事 以上の手順でTeraTarm上で文字化けせずにログを確認できる 事が出来る事を確認致しました。 (今後更に検証を行うべきだと思います。) ご教授ありがとうございました

その他の回答 (3)

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.4

先の回答で参考URL貼ってなかったので念のため追記: http://www.linux.or.jp/JM/html/util-linux/man1/script.1.html ついでにほかのUNIX系OSのmanも。 http://x68000.q-e-d.net/~68user/unix/pickup?script

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

なんか知らないけど改行コードが CR + LF で記録されているみたいですね。 通常、UNIX系OSでは改行コードはLFだけなので、CR+LFで改行を記録しているファイル(Windows上のテキストファイルは基本的にこの形)をUNIX系OS上のテキストエディタで開くと"CR"が"^M"として表示されるのはよくあります。 ただ、何で改行が"CR + LF"で記録されているのかがわからないのですが… 何か設定しませんでした?

tcpip110
質問者

補足

特に特別な設定をした覚えは無いのですが・・・。 実行環境について説明不足でありました。 WindowsからTeraTermで作業を行っております。 正常に見れている?!catについて 何故下記のように 秒 のところで改行になってしまい [unix@local ~]$ hostname の表示が に開始しました の後にきてしまうのかが 調べてもどうしても分からないので こちらについても ご教授よろしくお願い致します。 スクリプトは 2007年07月20日 23時48分27秒 に開始しました[unix@local ~]$ hostname

回答No.1

~M がつくってことは、ログファイル中の改行が CRLF に なってるのだと思います。 ログファイルをnkf とかで変換したら ~M は無くなるのでは? (例えば、 nkf --unix hoge > hoge.txt )

tcpip110
質問者

お礼

ご連絡ありがとうございます。 nkfコマンドを実行後、viewコマンドの出力は catコマンドと同様の出力となりました。 (catとviewで何故出力の内容が違ってしまうのでしょうか・・。) 取り急ぎ実行ログを下記に記述いたします。 [unix@local ~]$ nkf --unix hoge > hoge.txt [unix@local ~]$ view hoge.txt スクリプトは 2007年07月21日 01時15分09秒 に開始しました[unix@local ~]$ date 2007年 7月 21日 土曜日 01:15:13 JST [unix@local ~]$ exit スクリプトは 2007年07月21日 01時15分14秒 に終了しました

関連するQ&A

専門家に質問してみよう