coreutils の日本語版 info マニュアルのインストール方法と 使用法を簡単に説明します。コマンドラインから "info coreutils-ja" と 打ち込むと、日本語 info が読めるようなら、coreutils-ja.info がすでに きちんとインストールされています。「1 インストール」の項目を飛ばして、 「2 使用法」に進んでください。 目次 ==== 1 インストール 1.1 インストール、あるいは dir ファイルへの登録 1.2 アンインストール 1.3 /usr/share/info ディレクトリ以外へのインストール 1.4 info ファイルの作成 (おまけ 1) 1.5 html ファイルの作成 (おまけ 2) 1.6 マニュアルの印刷 (おまけ 3) 2 使用法 2.1 日本語版 coreutils info マニュアルの呼び出し方 2.2 info マニュアルにおける基本的なキー操作 2.3 g コマンドのちょっと複雑な使用法 1 インストール =============== 1.1 インストール、あるいは dir ファイルへの登録 ----------------------------------------------- インストール方法と言うより、coreutils-ja を info のトップレベル・ メニューに登録して、"info coreutils-ja" や "info cat-ja" などで 日本語の info マニュアルが読めるようにする方法です。 この登録をしないでも、coreutils-ja.info ファイルをカレントディレクトリに 置いて、 info -f ./coreutils-ja.info と打ち込めば、coreutis-ja の最初のページを開くことができます。さらに、 そのページをスクロールすると見ることのできるメニューをたどって (あるいは、info の m コマンドを使って)、各コマンドの説明に飛ぶことが できます。しかし、それでは不便でしょう。"info ls-ja" や "info cat-ja" で、 誰でも直接 ls や cat の日本語マニュアルが読めた方が便利です。そこで、 coreutils-ja.info を info のトップレベル・メニューに登録します。 作業は、root ユーザになって行います。info のトップレベル・メニューが 記載されているファイルは、標準では /usr/share/info/dir です。 coreutils-ja.info を /usr/share/info ディレクトリにコピーしてください。 cp coreutils-ja.info /usr/share/info cd /usr/share/info info ファイルは、gzip などで圧縮することができます。 GNU の install-info コマンドで coreutils-ja.info を dir ファイルに 登録します (注 1)。install-info の書式はこうです。 install-info [OPTION]... [INFO-FILE [DIR-FILE]] カレントディレクトリが /usr/share/info なら、具体的なコマンドは、 こうなります。 install-info coreutils-ja.info dir 注 1: debian のようにディストリビューション独自の install-info コマンドが入っていることがあります。その場合は、マニュアルで 使用法を調べるか、GNU の install-info (debian では、ginstall-info という名前で入っている) を使ってください。 圧縮ファイルの場合でも ".gz" まで指定する必要はありません。もちろん、 付けても構いません。これで、インストール完了です。"info dd-ja" などで 日本語マニュアルが読めるはずです。 1.2 アンインストール -------------------- coreutils-ja.info をアンインストールしたい場合は (登録から削除したい 場合は)、次のように --delete オプションを使います。 install-info --delete coreutils-ja.info dir そして、coreutils-ja.info (または、coreutils-ja.info.gz) を消去します。 rm coreutils-ja.info 1.3 /usr/share/info ディレクトリ以外へのインストール ---------------------------------------------------- coreutils-ja.info は、一応 /usr/share/info ディレクトリにコピーする ことを想定して、作ってありますが、info コマンドのサーチパスにある ディレクトリなら、そこにコピーしても、たぶん問題なく使用できます。 info コマンドの現在のサーチパスは、info 実行中に H キーを押せば、 見ることができます (info の古いバージョンでは h キーでした)。 /usr/local/share/info というディレクトリが存在すれば、 "/usr/share/info:/usr/local/share/info:." になっていると思います。 存在しなければ、たぶん "/usr/share/info:." だけです。また、環境変数 INFOPATH によってサーチパスを /usr/share/info に追加することもできます (環境変数 INFOPATH については、info info-stnd を参照してください)。 coreutils-ja.info を /usr/share/info 以外に置く場合は、 install-info コマンドの引数の dir には、/usr/share/info/dir を 指定してもよく、info ファイルをコピーしたディレクトリ中の dir (たとえば、 /usr/local/share/info/dir) を指定してもよいでしょう。後者の場合、 info コマンドが、実行時に両方の dir を統合して、トップレベルのメニューを 作ってくれます。 coreutils-ja.info を /usr/share/info/ja といった、info コマンドの サーチパスにないディレクトリにコピーする場合は、環境変数 INFOPATH を 利用すればよいと思います。他にも方法がありますが、説明は省略します。 1.4 info ファイルの作成 (おまけ 1) ---------------------------------- coreutils-ja.info の配布には、texi ファイルも含まれているかもしれ ません。coreutils-ja.info が既に存在する場合、以下を実行する必要は ありませんが、texi ファイルを修正して、自家特製の info ファイルを 作りたいこともあるかもしれません。そこで、念のため、texi ファイルから info ファイルを作成する方法を書いておきます。 texinfo 6.3 から makeinfo の日本語対応が向上しました (UTF-8 対応が 進んだということだと思います。でも、日本語の禁則処理には未対応の ようです)。そこで texinfo 6.3 に含まれる makeinfo を使用することを 想定しています。それ以前のバージョンの makeinfo では、行末の処理が うまく行かないかもしれません。 同一バージョンの次の 6 ファイルを一つのディレクトリに集めます。 constants.texi (英語日本語共通) fdl.texi (同上) version.texi (同上) coreutils-ja.texi (日本語に翻訳したもの) parse-datetime-ja.texi (同上) perm-ja.texi (同上) そのディレクトリで、makeinfo コマンドを実行します。 makeinfo --no-split coreutils-ja.texi --no-split オプションを付けずに makeinfo を実行すると、複数に分割 された info ファイルが生成されます。しかし、この分割された info ファイルを info コマンドで表示すると、ページによっては白黒が反転して しまうことがあります。ですから、makeinfo は --no-split を付けて実行した 方がよいでしょう。 注意: makeinfo のバージョンによっては、日本語をうまく扱えないことが あります。たとえば、Debian jessie の makeinfo 5.2 がそうです。 1.5 html ファイルの作成 (おまけ 2) ---------------------------------- info 形式のマニュアルの閲覧法は、あまり直感的とは言えません。 そこで、html 形式に変換したくなるかもしれません。それには、texi2html プログラムを使用します。 texi2html がすでにインストールされているとします。たとえば、1 node 1 ファイルの形で html ファイルを作るには、次のようにします。 まず、必要な texi ファイルがあることを確認してください。必要な texi ファイルは、info ファイルを作成する場合と同じで、次の 6 個です。 constants.texi fdl.texi version.texi coreutils-ja.texi parse-datetime-ja.texi perm-ja.texi 上記の texi ファイルのあるディレクトリの直下に html ディレクトリを 作って移動し、texi2html コマンドを実行します。 mkdir html cd html texi2html --split node ../coreutils-ja.texi node ごとではなく、章ごとに分割したかったら、"--split chapter" です。 texi2html の詳しい使い方については、"man texi2html" で調べてください。 なお、makeinfo に --html オプションを付けても、texi ファイルから html ファイルを作ることができます。こちらについての詳細は、"info texinfo" の "Generating HTML" をご覧ください。 1.6 マニュアルの印刷 (おまけ 3) ------------------------------- 細田さんという方のおかげで、texinfo 6.3 以降なら、日本語の texi ファイルから pdf が作れるようになりました。LuaTex 0.95 以降、または XeTeX 0.9998 以降 (後者の場合は、zhspacing も)、それに、texinfo-ja.tex ファイルが必要だそうです。 texinfo-ja.tex ファイルについては、ディストリビューションによっては、 texinfo 6.3 以降でも、/usr/share/texmf/tex/texinfo に texinfo.tex と txi-ja.tex はあっても、texinfo-ja.tex が存在しないかもしれません。 そんなときは、texinfo の開発元から、texinfo パッケージをダウンロードして、 texinfo-ja.tex を取り出せばよいでしょう。 texinfo-ja.tex を texi ファイル群と同じディレクトリに置き、 coreutils-ja.texi ファイルのヘッダに以下のような行を書きます。 \input texinfo-ja (\input texinfo を書き換える) @documentencoding UTF-8 (なければ追加) @documentlanguage ja (同上) そして、LuaTex を使うなら、以下を実行します。 $ PDFTEX=luatex texi2pdf coreutils-ja.texi これで pdf ファイルができるはずですが、筆者のところでは、「xkeyval がない」というエラーが出て、止まってしまいました。xkeyval.* は、 debian stretch では texlive-latex-recommended パッケージに 入っています。それを入れることで pdf ファイルの作成に成功しました。 より詳しくは、細田さんのお書きになった記事をご覧ください。 http://www.trueroad.jp/2016/05/14-01.html 2 使用法 ========= 2.1 日本語版 coreutils info マニュアルの呼び出し方 -------------------------------------------------- coreutils-ja.info のインストールが済んでいるなら、コマンドラインから、 info coreutils-ja (coreutils マニュアル全体の最初のページ) info chmod-ja (chmod コマンドの info マニュアル) のように打ち込めば、coreutils 全体や coreutils に属する個々のコマンドの 日本語 info マニュアルを開くことができます (注 1)。英語版のマニュアルを 読むには、"info coreutils" や "info chmod" とタイプします。 注 1: なお、"info coreutils-ja 'chmod invocation'" といった 呼び出し方もあります。一般に info コマンドの書式は、 "info [OPTION]... [メニュー項目名] [メニュー項目名]..." です。メニューが階層を持っているとき、メニュー項目の連鎖を 指定することで、深いところにあるセクションを直接呼び出せる わけです。たとえば、"info mew copyright" とすれは、他の プログラムのマニュアルの Copyright セクションではなく、 Mew プログラムの Copyright セクションを直接開くことができます。 info マニュアルの読み方の基本は、「メニューの項目にカーソルを 合わせてリターンキーを押せば、そのページに飛ぶ。スペースで先へ進み、 バックスペースで後戻りする。q キーで終了する」です。もっと複雑な (便利な) 使い方については、以下で説明します。 日本語版 coreutils info マニュアルの呼び出し方は、もう一つあります。 info プログラムを引数なしで実行すると (注 2)、info マニュアルの トップレベル・メニューが開きます。そこで、coreutils-ja, chmod-ja などのメニュー項目を探して、カーソルを合わせ、リターンキーを押せば、 日本語マニュアルが表示されます。でも、キー操作を使った方が手間が かかりません。トップレベル・メニューの画面で m キーを押すと、最下行に (Emacs でいうミニバッファに) 「メニュー項目:」(英語なら 「Menu item:」) というプロンプトが出ます。それに対して、コマンド名に -ja を付けて 打ち込み、リターンキーを押せばよいのです。たとえば、m キーを押して出た 「メニュー項目:」プロンプトに対して chmod-ja と打ち込めば、日本語版の chmod コマンドのマニュアルが、chmod だけなら、英語版のマニュアルが 表示されます。 注 2: info マニュアルは info コマンドだけでなく、Emacs でも読めます。 Emacs の info リーダーを呼び出すには、Emacs 上で C-h i、または M-x info とタイプします。そうすると、info のトップレベル・ メニューが開きます。古めの Emacs (たとえば、Emacs22) をご使用に なっている場合は、日本語が文字化けして、読めないかもしれません。 Emacs23 以降なら、たぶん大丈夫です。Emacs の info リーダーの 使い方は、info コマンドとほぼ同じです。 coreutils-ja、chmod-ja などと -ja を付けるのは、info プログラムを 起動するときと、info のトップレベル・メニューにいるときだけです。 coreutils-ja であれ、dd-ja であれ、すでに日本語版の coreutils マニュアルのどれかを開いている場合は、-ja をコマンド名の後ろに付ける 必要がありません。と言うより、付けてはいけません。 coreutils-ja の内部では、コマンドのメニューがあるページなら (スクロールしないとメニューが見えませんが、coreutils-ja の最初の ページもその一つです)、m に chmod などとコマンド名を続けて、リターン キーを押すだけで、たいていの場合、そのコマンドの日本語マニュアルが 開きます (注 3)。また、g キーでノード (ほぼ章や節や項に当たります) に直接飛ぶ場合も、g キーを押すと最下行に出る「ノードへ移動:」(英語なら 「Goto node:」) というプロンプトに対して chmod invocation などと ノード名を打ち込んで、リターンキーを押せば、そのノードが開きます (注 4)。 メニューにリストされている項目のノード名は、たいていメニュー項目名 (英語) と同じです (注 5)。m の場合も g の場合も、タブで文字列の補完ができます。 注 3: 厳密な言い方をすると、m ではメニュー項目名を指定します。 ただし、メニュー項目名の先頭から、他の項目と区別するのに 必要なだけの部分を指定すれば充分です。ですから、メニュー 項目名が chmod invocation なら、chmod というコマンド名 だけでよいことになります。とは言え、pr, sort、comm、tr、dir、 rm, date, who コマンドのような例外もあります。たとえば、 coreutils-ja の最初のページでは、sort で始まるメニュー項目名が 二つあるので (sort invocation と Sorting the output)、m に sort と続けただけでは足りません。sort に続けて、スペースを 一回押し、それからタブを押してください。それで sort invocation と補完されるはずです。rm や tr などのコマンドについても 同様です。date コマンドの場合は、coreutils-ja のメニューに date invocation のほかに Date input formats という項目も あるので、"date inv" まで指定する必要があります。 注 4: m はメニューのあるところでしか使えませんが、g はたいてい どこでも使えます。しかし、ノード名はメニュー項目名と違って、 省略を受付けません。そこで、g では、タブによる補完を多用する ことになります。 注 5: メニュー項目名とノード名が違う場合もあります。たとえば、 引数なしで info コマンドを実行したときに表示されるトップ レベル・メニューでは、日本語 cat マニュアルのメニュー項目名は cat-ja ですが、ノード名は (coreutils-ja.info ファイルの) cat invocation です。 なお、m に続けるメニュー項目名では、たいていの場合、大文字小文字を 区別しません。g に続けるノード名の場合は、原則として大文字小文字の区別が 行われますが、ユーザが大文字で指定しようと、小文字で指定しようと、タブに よる補完を使用すると、補完と同時に正しい表記に変更されます。 2.2 info マニュアルにおける基本的なキー操作 ------------------------------------------- info プログラムではキー操作をコマンドと言います。スペースを押すのも、 q や n キーを押すのもコマンドの実行です。 スペースで先へ進み、バックスペースで後へ戻ることができます (スクロールします)。矢印キーで上下左右にカーソルが動きます。 メニューの項目やクロスリファレンスにカーソルを合わせて、リターン キーを押すと、その項目に飛びます。l キーを押すと、直前に開いていた ノードに戻ります。q キーで info が終了します。それに m, g, n, p, ], [, u, t コマンドを知っていれば、たいてい用が足ります (そうしたコマンドの 動作については、下記を参照してください)。Emacs の info リーダーの キー操作も、ほとんど同じです。 ああ、二つ書き忘れました。C-l (Ctrl と l (エル) を同時に押します) と C-g も重要です。info プログラムは、バージョンによっては、日本語の 行末処理が上手ではありません。行末にゴミが入ることがあります。 そういうときは、C-l を押して画面を再描画すると、表示が正常になります。 C-g の方は、コマンドを途中でキャンセルするときに使います。 info 中でのキー操作の詳細は、"info info" や "info info-stnd" を 実行して、マニュアルを読んでください (残念ながら、英語です)。 注意: ここでは、info 6.3 を使うことを想定して、基本的なコマンドのみを 挙げておきます。バージョンによっては、使えなかったり、動作が違ったり することもあります。たとえば、古いバージョンの info では、'/', 's', 'C-s' などで日本語の検索ができません (英語による検索はできます)。 Space: 1 画面スクロール (最下部の 2 行が最上部に残る)。 Backspace: 1 画面スクロールバック。 Delete: info コマンドでは Backspace と同じ (Emacs の info リーダーではたぶん無効)。 矢印キー: カーソルが上下左右に移動する。 Return: メニューやクロスリファレンスで、カーソル位置にある 項目へ飛ぶ。 q: info 終了。 C-l: 画面の再描画。 C-g: コマンドのキャンセル。 H: コマンドの簡単な説明 (古いバージョンでは h)。 n: 同一レベルの次のノードへ進む。 p: 同一レベルの前のノードへ戻る。 ]: レベルが違っても、ドキュメントの次のノードに進む。 [: レベルが違っても、ドキュメントの前のノードに戻る。 mメニュー項目名: 指定したメニュー項目に飛ぶ。 gノード名: 指定したノードに飛ぶ。 u: 一つ上のレベルのノードに移動する。 t: トップノードに飛ぶ。 d: info マニュアル全体のトップレベル・メニューに飛ぶ。 b: 現在のノードの先頭に戻る。 e: 現在のノードの末尾に飛ぶ。 l: 元のページ (すなわち、直前に読んでいたノード) に戻る。 s または /: 指定した文字列で正規表現検索をする (Emacs の info リーダーでは、/ は使えないが、s による検索はできる)。 同じ文字列の検索を続行するには、less や man とは違って、 n ではなく、s または / に続けてリターンを押す。 ?: 逆方向への正規表現検索 (Emacs ではコマンドの簡単な説明)。 C-s: インクリメンタル検索をする。 C-r: 逆方向のインクリメンタル検索。 f または r: クロスリファレンスをたどる (Emacs の info リーダーでは クロスリファレンスをたどるのは f だけであり、r は l の 反対の動作をする)。 i: 指定した文字列をインデックス中で探して、その参照箇所に 飛ぶ (coreutils-ja のインデックスは日本語化されて いない。従って、日本語によるインデックス検索は、 今のところできない。英語によるインデックス検索は 可能)。 ,: i コマンドでインデックス検索をしているとき、i で 指定した文字列にマッチする次のインデックス項目の 参照箇所に飛ぶ。 ESC C-f: 脚注があるとき、ウインドウを分割して、下のウインドウに 脚注を表示する (Emacs の info リーダーでは使えない)。 脚注のウインドウを消すには、本文のウインドウにカーソル があることを確認して、C-x 1 とキーを押す (Ctrl と x の 同時押し。そして 1 (いち))。 2.3 g コマンドのちょっと複雑な使用法 ------------------------------------ "info ls-ja" を実行して、ls の日本語マニュアルを読んでいるとします。 そのとき、原文が読みたくなったら、どうしますか。info を一度終了して、 "info ls" を実行する。d コマンドで info のトップレベル・メニューに飛び、 m に続けて ls とタイプする。別の端末エミュレータから、"info ls " を 実行する。もちろんどれも正解です。特に 3 番目は、原文と翻訳を並べて 見ることができますから、有用な方法だと思います。 しかし、日本語マニュアルを表示している現在の info から、ls の英語版 マニュアルに直接飛ぶこともできます。g コマンドをこんなふうに使います。 g(coreutils)ls invocation g キーを押すと最下行に出るプロンプトに対して (coreutils)ls invocation と打ち込むわけです。 g コマンドの正規の使用法は、次のようなものです。 g(ファイル名)ノード名 上の書式中、同じマニュアル中での移動ならば (たとえば、coreutils-ja の あるコマンドの説明から、coreutils-ja の他のコマンドの説明に飛ぶのならば)、 ファイル名は省略できます。また、他のマニュアル中のノードに飛ぶとしても、 そのマニュアルが /usr/share/info のような info のサーチパスの下にある ファイルならば、そのサーチパスを基点とする相対パスで、ファイル名を指定する ことができます (たとえば、/usr/share/info/ja/something.info.gz ならば、ja/something.info.gz)。しかも、info や info.gz のような拡張子は 省略できます。そこで、日本語マニュアルから ls の英語マニュアルに飛ぶ コマンドは、 g(coreutils)ls invocation でよいことになります。英語版 ls マニュアルから日本語版に戻るには、 l コマンドを使えば済みます。"g(coreutils-ja)ls invocation" と 打ち込んでもよいでしょう。 なお、g コマンド書式中のファイル名は、絶対パスやカレントディレクトリ からの相対パスで指定することもできます。 2017-07-16 訳者