お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-06-05 17:12:54

akira314
新しいメンバ
登録日: 2010-03-06

manコマンドのテキスト出力で一部の文字が消える

manコマンドの出力をテキストで保存出来ないかと調べて、下記方法にて出力出来るようになりました。

$ man man | col -bfx > man.txt

manpages-jaをインストールしているので、日本語でマニュアルが表示されるのですが、出力されたテキストファイルを確認すると奇妙に文字が消えています。

端末から$man manを実行すると

ここから↓
MAN(1)                                          Manual pager utils                                          MAN(1)



名前
       man - オンラインリファレンスマニュアルのインターフェース

書式
       man  [-c|-w|-tZT  device]  [-adhu7V]  [-m  system[,...]]  [-L  locale] [-p string] [-M path] [-P pager] [-r
       prompt] [-S list] [-e extension] [[section] page ...] ...
       man -l [-7] [-tZT device] [-p string] [-P pager] [-r prompt] file ...
       man -k [apropos options
ここまで↑以下省略

と普通に表示されますが、$ man man | col -bfx > man.txt で出力すると

ここから↓
MAN(1)                                          Manual pager utils                                          MAN(1)




       man - オンラインリファレンスマニュアルのインターフェース


       man  [-c|-w|-tZT  device]  [-adhu7V]  [-m  system[,...]]  [-L  locale] [-p string] [-M path] [-P pager] [-r
       prompt] [-S list] [-e extension] [[section] page ...] ...
       man -l [-7] [-tZT device] [-p string] [-P pager] [-r prompt] file ...
       man -k [apropos options
ここまで↑

と、箇条書きの題?の部分が、「名前」は「名」、「書式」は「書」と一文字以降が消えてしまっています。
以降全ての箇条書きの題が一文字目のみ表示されます。
表現が難しく説明が下手で申し訳ありません。

colを外してみたり、オプション替えてみたりしたのですが、現象は変わりません。
もちろん、man以外のマニュアルでも同じ現象になります。
何か、方法に誤りがあるのでしょうか?

Ubuntu 10.04
カーネル Linux 2.6.32-22-generic
GNOME 2.30.0

オフライン

 

#2 2010-06-05 17:32:39

hmatsue
アドバイザ
登録日: 2009-03-10

Re: manコマンドのテキスト出力で一部の文字が消える

なんか直感的にはバグっぽい気が。。
manの出力形式とかgroffとか全く判らないので、その辺りは他の方からのフォローを待つとして。。

代替策として、
1. emacsを起動
2. "M-x eshell"して、eshellモードに移行
3. "man man"などとしてmanの内容を表示させる
4. そのバッファを保存
とかはいかがでしょう。

オフライン

 

#3 2010-06-05 18:19:00

yama
メンバ
登録日: 2006-10-23

Re: manコマンドのテキスト出力で一部の文字が消える

hmatsue による投稿:

1. emacsを起動
2. "M-x eshell"して、eshellモードに移行
3. "man man"などとしてmanの内容を表示させる
4. そのバッファを保存

Emacs だと M-x woman でOKです。

オフライン

 

#4 2010-06-05 18:26:42

hmatsue
アドバイザ
登録日: 2009-03-10

Re: manコマンドのテキスト出力で一部の文字が消える

おお。こんなモード(?)もあったのですね。
ご教示多謝です。
しかも、独自にmanの元ファイルを解釈しているのか、端末でmanしたときは改行とインデントの位置が崩れるような日本語manも綺麗に整形されて出力されますね。

オフライン

 

#5 2010-06-07 08:35:23

akira314
新しいメンバ
登録日: 2010-03-06

Re: manコマンドのテキスト出力で一部の文字が消える

サポートありがとうございます。

Emacsが何なのか解らない位の初心者ですが、早速、試してみます。

オフライン

 

#6 2010-06-07 12:36:57

hmatsue
アドバイザ
登録日: 2009-03-10

Re: manコマンドのテキスト出力で一部の文字が消える

すいません。説明不足でした。
emacs
は高機能テキストエディタであり、emacs lispというプログラム言語の環境でもあります。
emacs lispにより様々な機能拡張がされており、womanなどもそのひとつだと思います。
初期設定については、少し前の自分の設定を下記に投稿したことがあるので参考にしてみてください。

https://forums.ubuntulinux.jp/viewtopic.php?pid=56960#p56960

端末で、
$ gedit ~/.emacs
などとして設定ファイルを開き、内容をコピペして保存して、emacsを起動すればとりあえず動くかと思います。
emacsについては「emacs, 入門」などをキーワードに検索すればいろいろ見つかるかと思います。
http://sourceforge.jp/magazine/09/04/06/1138226
http://cns-guide.sfc.keio.ac.jp/2000/4/1/
http://lecture.ecc.u-tokyo.ac.jp/~nakamura/UNIX/5-Ex-Login-Mule.html
限定された目的に使うのであれば、マウスでの操作でも何とかなると思います。
なお、M-xとの表記は、ESCキーを押すか、Alt+xキーを押すことを意味します(設定によって変わったかも?)。
C-xなどの表記は、Ctrl+xキーを押すことを意味します。

オフライン

 

#7 2010-06-07 12:42:31

hmatsue
アドバイザ
登録日: 2009-03-10

Re: manコマンドのテキスト出力で一部の文字が消える

すいません。またやらかしました。そのままだとエラーになるかもです。

コード:

;======================================================================
; 言語・文字コード関連の設定
; Emacs 22(Gutsy)では、un-define の設定なしで utf-8 が使えます
;======================================================================
(setq load-path (cons "~/.emacs.d" load-path))
(setq load-path (cons "/usr/share/emacs/site-lisp" load-path))
;(setq load-path (cons "~/site-lisp" load-path))
;(setq load-path (cons "~/site-lisp/pysmell-0.7.3" load-path))
;(require 'un-define)
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(setq file-name-coding-system 'utf-8)
;;
;======================================================================
; Anthy
;    CTRL-\で入力モード切替え
;======================================================================
(load-library "anthy")
(setq default-input-method "japanese-anthy")
(define-key isearch-mode-map "\C-\\" 'isearch-edit-string)
; TIME OUTの変更
; [参考サイト] http://spalab.naist.jp/~yuu-t/wiki/index.php?anthy-el-emacs23
(if (>= emacs-major-version 23)
    (setq anthy-accept-timeout 1))
;;
;=======================================================================
;フォント
;=======================================================================
(cond (window-system
;       (set-default-font "-*-fixed-medium-r-normal--12-*-*-*-*-*-*-*")
;       (set-default-font "-shinonome-gothic-medium-r-normal--12-*-*-*-*-*-*-*")
       (set-default-font "VL Gothic-9")
       (progn
         (set-face-font 'default
;                        "-shinonome-gothic-medium-r-normal--12-*-*-*-*-*-*-*")
                        "VL Gothic-9")
         (set-face-font 'bold
;                        "-shinonome-gothic-bold-r-normal--12-*-*-*-*-*-*-*")
                        "VL Gothic-9")
         (set-face-font 'italic
;                        "-shinonome-gothic-medium-i-normal--12-*-*-*-*-*-*-*")
                        "VL Gothic-9")
         (set-face-font 'bold-italic
;                        "-shinonome-gothic-bold-i-normal--12-*-*-*-*-*-*-*")
                        "VL Gothic-9")
       )))
;;
;=======================================================================
;フレームサイズ・位置・色など
;=======================================================================
(setq initial-frame-alist
       (append (list
;                  '(foreground-color . "green")                ;; 文字色
;                  '(background-color . "#222222")              ;; 背景色
;                  '(border-color . "black")
;                  '(mouse-color . "green")
;                  '(cursor-color . "green")
                  '(width . 100)                              ;; フレームの幅
                  '(height . 45)                             ;; フレームの高さ
                  '(top . 20)                                  ;; Y 表示位置
                  '(left . 300)                               ;; X 表示位置
                  )
               initial-frame-alist))
(setq default-frame-alist initial-frame-alist)
;;
;=======================================================================
; Misc
;=======================================================================
;(mouse-wheel-mode)                                              ;;ホイールマウス
(global-font-lock-mode t)                                       ;;文字の色つけ
(setq line-number-mode t)                                       ;;カーソルのある行番号を表示
(setq column-number-mode t)                                     ;;カーソルのあるカラム番号を表示
(tool-bar-mode nil)                                             ;;ツールバーを表示しない
(menu-bar-mode t)
(scroll-bar-mode nil)
(auto-compression-mode t)                                       ;;日本語infoの文字化け防止
;(set-scroll-bar-mode 'right)                                    ;;スクロールバーを右に表示
(global-set-key "\C-z" 'undo)                                   ;;UNDO
(setq frame-title-format                                        ;;フレームのタイトル指定
        (concat "%b - emacs@" system-name))
(global-set-key "\C-m" 'newline-and-indent)                     ;;インデント付きの改行
;(display-time)                                                 ;;時計を表示
(global-set-key "\C-h" 'backward-delete-char)                  ;;Ctrl-Hでバックスペース
(setq make-backup-files nil)                                   ;;バックアップファイルを作成しない
(setq visible-bell t)                                          ;;警告音を消す
;(setq kill-whole-line t)                                       ;;カーソルが行頭にある場合も行全体を削除

(setq-default indent-tabs-mode nil)                             ;;タブではなくスペースを使う

あたりで試してみて下さい。

オフライン

 

#8 2010-06-08 11:56:35

akira314
新しいメンバ
登録日: 2010-03-06

Re: manコマンドのテキスト出力で一部の文字が消える

察しの通り、$ emacs M-x woman とやってしまいました。(^^;

しかし、Emacsもインストールしましたし、ちゃんとC-c M-xの意味も調べました。
そして、無事eshell上で man man を行い文字が消えることも無くテキスト保存できました。
もちろん、womanも試しました。

.emacsに関しては、ls -aでホームフォルダ確認しても見当たらず、geditで新規作成しました。
ちゃんと、読み込まれているようですが、anthyがありません!とエラーが出ているようです。
anthyのパッケージをインストールしていないからですね。

Warning (initialization): An error occurred while loading `/home/******/.emacs':

File error: Cannot open load file, anthy

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

質問内容が良くなかったのですが、今回やりたかったのは簡単にmanのマニュアルをテキスト保存するシェルスクリプトを作成しようと思ってのトラブルでした。
目的解決には至りませんでしたが、大変勉強になりました。

初心者としては、簡単にマニュアルを見るときは、yelp man:コマンド が、良いのかもしれませんね。

本当にありがとうございます。

オフライン

 

#9 2010-06-08 12:21:10

hmatsue
アドバイザ
登録日: 2009-03-10

Re: manコマンドのテキスト出力で一部の文字が消える

akira314 による投稿:

ちゃんと、読み込まれているようですが、anthyがありません!とエラーが出ているようです。
anthyのパッケージをインストールしていないからですね。

https://wiki.ubuntulinux.jp/UbuntuTips/Application/EmacsJapaneseSetup
を参照して、emacs-env-ja(多分、パッケージ名は変わっていないと思います)をインストールするか、

コード:

(load-library "anthy")
(setq default-input-method "japanese-anthy")
(define-key isearch-mode-map "\C-\\" 'isearch-edit-string)

あたりを消すかしていただくと、正常になるかと思います。

akira314 による投稿:

質問内容が良くなかったのですが、今回やりたかったのは簡単にmanのマニュアルをテキスト保存するシェルスクリプトを作成しようと思ってのトラブルでした。

あ、いや。ご質問の内容は理解したのですが、Ubuntuのmanの日本語の取扱いに問題があるような気がしつつ、調査の方法が思いつかなかったので、代替手段の提示のつもりでした。


宛 各位
本題のmanの出力がおかしくなる現象について、なにかご存知の方がいらっしゃればフォロー願えませんでしょうか。

オフライン

 

#10 2010-06-08 18:21:03

yama
メンバ
登録日: 2006-10-23

Re: manコマンドのテキスト出力で一部の文字が消える

Emacs lisp でやってみました。
replace.el の名前で以下の内容のファイルを作成します。

コード:

;;; バックスペースを除去する。
(let ((file (car argv)))
  (with-temp-buffer
    (insert-file-contents file)
    (replace-regexp ".\b" "")
    (print (buffer-string))))

●使い方

コード:

emacs --script replace.el 入力ファイル

標準出力にバックスペースが削除されて出力されます。

オフライン

 

#11 2010-06-08 18:47:45

yama
メンバ
登録日: 2006-10-23

Re: manコマンドのテキスト出力で一部の文字が消える

追記です。
man man > foo.txt の時点ですでにおかしいんでしたね。
しょうがないので、当座は、

コード:

zcat /usr/share/man/ja/man1/znew.1.gz | groff -DeucJP -mandoc -Tutf8 > bar.txt

などとして回避していただくしか。
どっちにしろ泥縄ですがorz

# 問題の根幹はgroffでこのフォーラムを検索すれば出てくるはず。

オフライン

 

Board footer

Powered by FluxBB