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秒
に終了しました
以上、お手数お掛けいたしますが
ご教授よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
手元の環境(FreeBSD + Teratermですが)で確認してみました。
私も知らなかったのですが、コンソール環境では改行を"CR+LF"で制御しているようですね。参考URLのページによれば、
--------------------
script はラインフィードやバックスペースも含め、 すべて をログファイルに書きこむ。これは普通のユーザが期待するものとは異なるかもしれない。
--------------------
とのことなので、画面制御用に出力したCRがそのまま残ってしまったのでしょう。
コマンドの出力時の改行はLFのはずなので、このあたりの変換をどこでやっているかは識者にお任せしたいと思います。
> 何故下記のように 秒 のところで改行になってしまい
これは、scriptのソースを見ればわかると思いますが、時刻情報が変数で与えられていて、変数には時刻情報+改行が含まれていることから起きている現象だと思います。英語で出力するようにすれば(環境変数LANGを"C"にするなど)きちんと見えると思います。
ご連絡ありがとうございます。
まず、『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上で文字化けせずにログを確認できる
事が出来る事を確認致しました。
(今後更に検証を行うべきだと思います。)
ご教授ありがとうございました
No.4
- 回答日時:
先の回答で参考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
No.2
- 回答日時:
なんか知らないけど改行コードが 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
No.1
- 回答日時:
~M がつくってことは、ログファイル中の改行が CRLF に
なってるのだと思います。
ログファイルをnkf とかで変換したら ~M は無くなるのでは?
(例えば、 nkf --unix hoge > hoge.txt )
ご連絡ありがとうございます。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- iOS Unix実行ファイルの開き方 1 2022/06/07 12:47
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- 英語 複数が想定される名詞を、「不定冠詞+名詞単数形」で表す可否等について 11 2022/10/21 13:38
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
Linuxで*をつかってファイル移...
-
バッチで特定文字が含まれる先...
-
*.txtファイルの最終行だけ参照...
-
【Linux】findコマンドの表示順
-
Telnetコマンド/ディレクトリ内...
-
コマンドプロンプトでUSBメモリ...
-
【DOSコマンド】for文の中で変...
-
CentOS/リダイレクションに改行...
-
sedで置換した値を変数にセット...
-
コマンドプロンプト net user...
-
unixのdiffコマンドの動作について
-
○行目から□行目だけを表示する...
-
cshでfindした一覧をタイムスタ...
-
BATファイルによるfcコマンドで...
-
^M削除方法、教えてください。
-
find で探したファイルを探した...
-
Dirコマンドでフォルダ内ファイ...
-
batである文字列内に特定の文字...
-
TOPコマンドで表示するCPU使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
バッチで特定文字が含まれる先...
-
スラッシュ"/"を削除したい
-
Linuxで*をつかってファイル移...
-
CentOS/リダイレクションに改行...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
○行目から□行目だけを表示する...
-
ファイルの先頭に文字を追加す...
-
unixのdiffコマンドの動作について
-
コマンドプロンプトでUSBメモリ...
-
ファイルリストを印刷したい。
-
コマンドプロンプト net user...
-
ショートカットのリンク先(フ...
-
標準出力とリダイレクトを同時...
-
scriptコマンドの文字化けについて
-
windows7でmingwのgrepで漢字の...
-
cshでfindした一覧をタイムスタ...
おすすめ情報