ラベル man の投稿を表示しています。 すべての投稿を表示
ラベル man の投稿を表示しています。 すべての投稿を表示

2013年2月19日火曜日

Mac OS Xのlanguagesetupのmanページ面白い

調べたいことがあり、ターミナルからlanguagesetupのmanページを見てみたのですが、これはいったいどういうことでしょうか? そんなに長くないので全部載せちゃいます。


languagesetup(1)          BSD General Commands Manual         languagesetup(1)

NAME
     languagesetup -- set the primary language. (3622974 - more to come)

SYNOPSIS
     languagesetup [-abcd] [-a path] [file] [file ...] arg0 arg2 ...

DESCRIPTION
     Use the .Nm macro to refer to your program throughout the man page like
     such: languagesetup Underlining is accomplished with the .Ar macro like
     this: underlined text.

     A list of items with descriptions:

     item a   Description of item a

     item b   Description of item b

     A list of flags and their descriptions:

     -a       Description of -a flag

     -b       Description of -b flag

FILES
     /usr/share/file_name                          FILE_1description
     /Users/joeuser/Library/really_long_file_name  FILE_2 description

SEE ALSO
     a(1), b(1), c(1), a(2), b(2), a(3), b(3)

Darwin                          March 24, 2001                          Darwin


情報としては、青字の部分だけですが、このコマンドを探そうとしている人はそのくらいは既にわかっているはずですよね。面白すぎます。manページのテンプレートだと書いてあるサイトもありましたが。2001年からずっと直していないのでしょうかね。わざとでしょうね。

languagesetupに-hオプションを渡すと、ヘルプメッセージは出ますね。
やりたかったことは、ログインウィンドウでキーボードが日本語モードになっているのでそれを英語モードに戻すことです。ユーザ名は普通英語にしますよね。

$ sudo languagesetup -langspec English
System Language set to: English

これで、ログインウインドウで最初から英語になるようになり・・・ませんでした。Snow Leopardの時は、システムが日本語モードでもログインウインドウでは英語入力モードになっていたのですが。
今のところは、command + spaceキーを打つようにしていますが、忘れた時はcommand + ; キーで日本語モードにしています。でもcommand + 何かのキーは負けた気がして嫌なのです。何と闘っているんでしょうね。
tabキーを2度打ちする方法も最近発見し、それの方が負けた気がしないのでtabキーを2度打ちに移りつつある今日この頃です。でも、本当は最初から英語が入ってほしいと思います。

2013年2月7日木曜日

日本語のman (jman)と info

manコマンドについて書きましたが、英語のマニュアルしかないのでちょっとハードルが高いと思われた方もいるかもしれません。
そういう人のために、jmanという日本語化されたmanがあります。と言っても、Mac OS Xのmanページを日本語に翻訳したものではなく、FreeBSDやLinux、その他用に作られた日本語manページをMacで使おうというものです。ここでhiroto sakaiさんが公開されていますので、必要な方はダウンロード、インストールしてください。

御存じの方も多いかもしれませんが、現在のMac OS X上で動くコマンドの多くはFreeBSDというUnix系のOSから移植されたものです。FreeBSDの他にもUnix系(風?)のOSとして、Linuxがあります。Linuxは本来はOSのカーネル部分のみで、コマンド群はGNU Licenceの元で開発されたものが多く、FreeBSDのものとは、機能やオプション等で異なる場合があります。OS XはFreeBSD系のコマンドが多いので、FreeBSDのmanの方が完全ではないにしても親和性は高いようです。
といってもjmanはコマンドの大体の機能やオプションを日本語で知るという目的として使うべきであり、最終的にはOS Xのmanを見る必要はあります。
以下は、jman lsの出力例です。

$ jman ls

名称
     ls - ディレクトリの内容のリストを表示する

書式
     ls [-ABCFGHLPRTWZabcdfghiklmnopqrstuwx1] [file ...]

解説
     ls は file で指定されたファイル名およびオプションの指定にしたがって、ファ
     イルに関する各種の情報を表示します。なお、 file としてディレクトリが指定
     された場合は、そのディレクトリ配下のファイルに関する情報を表示します。

     file が指定されなかった場合は、カレントディレクトリのファイルを表示します
     。表示はファイル名のアルファベット順にソートされます。ただし、 file とし
     てディレクトリファイルとそれ以外のファイルを混在して指定した場合は、ディ
     レクトリ以外のファイルが先に表示され、その後ディレクトリ配下のファイルが
     表示されます。

     オプションとしては、以下のものがあります。

     -A      . と .. を除く全てのエントリを表示します。スーパユーザの場合は、
             通常このオプションがセットされています。

     -B      ファイル名中の非印字可能文字 ( ctype(3) と現在のロケール設定で定
             義されます) を強制的に \xxx の形式で表示します。 xxx は文字の数値
             であり 8 進数です。

     -C      マルチカラム形式で出力します。端末への出力の場合は、これがデフォ
             ルトになります。
...以下省略...


また、ターミナルで文字列を選択し、右クリックすると、「man ページを開く」メニューが出ますね。いつのバージョンからかわかりませんが。

 先ほどのjman lsのページで、lsを選ぶと英語のlsのmanページが表示されました。 

このスタイルは、ターミナルの環境設定でMan Pageプロファイルで設定してあるものが使われているようです。黄色背景が気に入らなければここを変更すればよいと思います。

このmanページの参照先には、シェルでログイン後のMANPATHは反映されていないようで、ターミナルが立ち上がった段階のMANPATHになっているようです。
このメニューのman機能を活用したい方は、/etc/launchd.confなどに定義しておく必要がありますね。
以前のこの記事この記事を参照してみてください。

それから、man以外にコマンドの使い方を調べるためのコマンドに、infoがあります。
$ info [トピック名]
で起動できます。こちらは、主にGNUのコマンド等が説明されています。
私は、emacsについて調べる時ぐらいにinfoを使うくらいです。
こちらも、OS X素のままでは英語での説明が表示されます。

man (jmanも)、infoはだいたい知っているコマンドで、オプションがどうなっていたかなと思う時の確認には、ターミナルから素早く確認できていいですね。
ちゃんと調べたい場合は、ウェブ検索で大元のサイトに行くことも多いですが。

2013年2月5日火曜日

MANPATH環境変数の整理

PATH環境変数の記事を書いている時に、自分のMANPATHもあまり整理されていないことに気づいたので、それについても書きたいと思います。

MANPATHは、Unixコマンドや関数の使い方の説明マニュアルであるmanページを探すための環境変数です。manページはターミナル上でmanコマンドを使い見ることができます。
例えば、grepコマンドについて知りたいと思ったら、
$ man grep
と、ターミナル上のプロンプトから入力すれば、以下のような説明が出てきます。

GREP(1)                                                                GREP(1)

NAME
       grep, egrep, fgrep - print lines matching a pattern

SYNOPSIS
       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       Grep  searches the named input FILEs (or standard input if no files are
       named, or the file name - is given) for lines containing a match to the
       given PATTERN.  By default, grep prints the matching lines.

       In addition, two variant programs egrep and fgrep are available.  Egrep
       is the same as grep -E.  Fgrep is the same as grep -F.

OPTIONS

... 長いので以下省略します...

元に戻ってMANPATHについての話です。

MANPATHは、manコマンドがmanファイルを探す場所を指定します。基本的な考え方としては、PATH変数と同じように、特殊・ローカルなディレクトリを先に、標準のディレクトリを後に指定すればよいと思います。また、PATH変数で指定されるディレクトリには、対応するman ファイルのディレクトリがありますので、PATHに合わせて指定すればよいでしょう。
現在の私のMANPATHは以下のようになっています。実は、整理した結果こうなったのですが、整理前は、/usr/local/manなどが複数回現れたり後ろの方に来ていました。

/Users/karuku/local/man:/Users/karuku/local/share/man:/usr/local/share/man:/opt/local/man:/usr/share/man:/opt/X11/share/man:/usr/local/clamXav/share/man

それぞれ以下に説明します。

/Users/karuku/local/man - ~/local/{bin,sbin}に対応します
/Users/karuku/local/share/man - 同上。上のものと合わせる方がよいのかも
/usr/local/share/man - /usr/local/{bin,sbin}に対応します
/opt/local/man - MacPorts用のman。/opt/local/share/manへのリンク
/usr/share/man - /usr/{bin,sbin}, /{s}binに対応します
/opt/X11/share/man - /opt/X11/binに対応します
/usr/local/clamXav/share/man - ClamXav用のman

ところで、同じディレクトリで、…/manとなっていたり、…/share/manとなっていたり、両方ある場合があります。
私の理解では、以前は、.../manというように…/binディレクトリと同じ階層にmanディレクトリのみが作られていたと思います。それが、いつの頃からか…/share/manに変更されてきたようです。…/share/manを知らないコマンドのために…/manも残されていた、または、…/share/manへのシンボリックリンクになって併存した時代が続き、最近は、…/share/manに統一されてきているようです。
OS Xの場合は、システムディレクトリは、…/share/manになっているようですね。

また、PATHとMANPATHで少し違うところがあります。PATHはコマンドの実行用なので最初にPATHの中から見つかったコマンドがシェルによって実行されます。
でも、MANPATHの場合は、manコマンドでマニュアルを見るためのものなので同名のコマンドや関数が重なっても、最初に見つかったものではないものを見たい場合があります。
その場合は、以下のようにmanコマンドに -a オプションを付ければすべての同名のコマンドや関数のファイルを表示してくれます。

例えば、md5コマンドについて知りたい場合、
$ man -a md5
とすると、私の場合は、openssl dgstコマンドのサブコマンドのmd5, /sbin/md5, md5関数、Tclでサポートされているmd5などの説明が表示されます。

皆さんも、ときどきPATHやMANPATHその他の環境変数を確認されるとよいのではないでしょうか。