アプリ版:「スタンプのみでお礼する」機能のリリースについて

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秒
に終了しました

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

A 回答 (4件)

手元の環境(FreeBSD + Teratermですが)で確認してみました。


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

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

ご連絡ありがとうございます。
まず、『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上で文字化けせずにログを確認できる
事が出来る事を確認致しました。
(今後更に検証を行うべきだと思います。)
ご教授ありがとうございました

お礼日時:2007/07/21 23:08

先の回答で参考URL貼ってなかったので念のため追記:


http://www.linux.or.jp/JM/html/util-linux/man1/s …

ついでにほかのUNIX系OSのmanも。
http://x68000.q-e-d.net/~68user/unix/pickup?script
    • good
    • 0

なんか知らないけど改行コードが CR + LF で記録されているみたいですね。


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

ただ、何で改行が"CR + LF"で記録されているのかがわからないのですが…

何か設定しませんでした?

この回答への補足

特に特別な設定をした覚えは無いのですが・・・。
実行環境について説明不足でありました。
WindowsからTeraTermで作業を行っております。

正常に見れている?!catについて
何故下記のように 秒 のところで改行になってしまい
[unix@local ~]$ hostname の表示が
に開始しました の後にきてしまうのかが
調べてもどうしても分からないので
こちらについても
ご教授よろしくお願い致します。

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

補足日時:2007/07/21 01:30
    • good
    • 0

~M がつくってことは、ログファイル中の改行が CRLF に


なってるのだと思います。
ログファイルをnkf とかで変換したら ~M は無くなるのでは?
(例えば、 nkf --unix hoge > hoge.txt )
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
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秒
に終了しました

お礼日時:2007/07/21 01:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!