AR(1)

名称
ar - ライブラリアーカイブの作成およびメンテナンス

書式
ar -d [-Tv] archive file ... -m [-Tv] archive file ... -m [-abiTv] position archive file ... -p [-Tv] archive [file ...] -q [-cTv] archive file ... -r [-cuTv] archive file ... -r [-abciuTv] position archive file ... -t [-Tv] archive [file ...] -x [-ouTv] archive [file ...]

解説
ar ユーティリティは、 ファイルの集まりであるアーカイブファイルの作成、および そのアーカイブのメンテナンスを行います。 いったんアーカイブを作成した後は、新しいファイルの追加、存在している ファイルの展開、削除、置き換えなども行うことが可能です。

ファイルは、アーカイブ内では単一の要素で名前付けされます。 つまり、ファイルをスラッシュ (``/'') つきのパスで参照した場合は、 パス中の最後の要素だけで名前付けされることになります。 コマンドラインに並べたパスをアーカイブ内に保存された ファイルの名前にマッチングさせる時は、各パスの最後の要素だけが 比較対象となります。

処理結果やエラーに関する全てのメッセージでは、コマンドライン上で パスが指定されているものはそれを利用します。 指定されていない場合はアーカイブ内の名前を利用します。 もし、アーカイブ内に同じ名前を持つファイルが複数存在し、 ある操作のためにアーカイブファイルを``選択''するようコマンドラインに パスを並べた場合は、 最初 に名前の一致したファイルだけが選択されます。

ar の通常の利用目的は、ローダ (ld(1) を参照してください) が利用するライブラリの作成とメンテナンスにありますが、 この目的に限定されているわけではありません。 オプションは以下のものがあります:

-a  -r や -m オプションと一緒に用いて位置を指定します。 指定したファイルは、アーカイブ内のメンバである position の 後ろ に格納もしくは移動されます。 position を指定する必要があります。

-b  -r や -m オプションと一緒に用いて位置を指定します。 指定したファイルは、アーカイブ内のメンバである position の 前 に格納もしくは移動されます。 position を指定する必要があります。

-c  通常は、アーカイブ作成時にはその動作状況を標準エラー出力を使って報告します。 もし -c オプションが指定されると、この報告を行いません。

-d  指定したアーカイブファイルを削除します。

-i  -b オプションと同一です。

-m  アーカイブ内のファイルの移動を行います。 -a, -b, -i のうちのいずれか 1 つが指定されれば、アーカイブ内のファイル position の前もしくは後ろにそのファイルを移動します。もし、これらのオプションが 指定されなければ、そのファイルはアーカイブの最後に移動されます。

-o  展開したファイルのアクセス時間と変更時間を、そのファイルを アーカイブに入れたときの時刻にセットします。 これは、ユーザが、展開されるファイルの所有者ではなくスーパユーザでもない 場合には失敗します。

-p  指定したアーカイブファイルの内容を、標準出力に書き出します。 ファイルを指定しなかった場合は、アーカイブ内の全てのファイルの内容が、 アーカイブ内で現れる順番どおりに出力されます。

-q  指定したファイルをアーカイブに素早く追加します。もしそのアーカイブが 存在しなければ、新しいアーカイブファイルが作成されます。 追加するファイルがそのアーカイブにすでに存在しているかどうかのチェックを 行わないため、大きなファイルを少しずつ作っている場合には -r よりも非常に高速となります。

-r  アーカイブに対し、指定したファイルの置換えや追加を行います。 アーカイブが存在しない場合は新しいアーカイブが作成されます。 すでに存在するファイルの置換えの場合は、アーカイブ内の位置は変りません。 新しいファイルは、オプション -a, -b, -i のうちのいずれかが指定されない限り、最後尾に追加されます。

-T  アーカイブメンバを選択するときやアーカイブメンバに名前をつける時に、 アーカイブメンバ名やコマンドラインのファイル名の最初の 15 文字だけを 利用するようにします。 古いアーカイブフォーマットでは、名前に 16 バイトの領域を使用していました。 しかし、いくつかの古いアーカイバやローダのインプリメントでは、 その空間全体を使って名前づけを行うことが出来ませんでした。 これは、最初の 15 文字で区別することができないファイル名は 結果として混同されるかもしれないことを意味しています。 もしファイル名が切り詰められた場合は、警告メッセージが標準出力に 表示されます。(詳細は ar(5) を参照して下さい。)

-t  指定されたファイルのリストを、アーカイブ内の順番で、1 行に 1 つずつ 表示します。 ファイルが指定されなかった場合には、アーカイブ内の全てのファイルの リストを出力します。

-u  ファイルのアップデートを行います。 -r オプションと併用した場合は、ディスク上にあるファイルの修正時刻が アーカイブ内のファイルの修正時刻よりも新しい場合にのみファイルが 置き換えられます。 -x オプションと共に指定された場合には、アーカイブファイルの変更時間が ディスク上のファイルの変更時間よりも新しい場合にのみ、 アーカイブ内のファイルが展開されます。

-v  動作状況を詳しく出力します。 -d, -m, -q, -x オプションと併用した場合には、 ar はファイルをひとつ変更するごとにメッセージを出力します。 この出力は、空白で区切られた 3 つのフィールドからなります。 これはぞれぞれ、オプション文字、ダッシュ (``-'')、ファイル名です。 -r オプションと併用した場合には、 ar は上で説明した表示を行いますが、最初の文字は、アーカイブにファイルが 追加された場合には ``a'' を表示し、すでにアーカイブ内にあるファイルが 置き換えられた場合には ``r'' を表示します。

    -p オプションと併用した場合には、表示されるファイルそれぞれについて、 改行 1 つ、``<'' と ``>'' で括られたファイル名、 改行 2 つ、ファイルの内容の順で出力されます。

    -t オプションと併用した場合には、 ar はアーカイブメンバのリストを ``ls -l'' 形式で表示します。 このリストは、空白で区切られた 8 つのフィールドからなります。 それぞれ順番に、 ファイルのパーミッション (strmode(3) 参照)、 10 進数表現のユーザ ID とグループ ID (この 2 つの間は ``/'' で区切られます)、 ファイルサイズ (バイト単位で)、ファイルの修正時刻 (date(1) フォーマットで。つまり ``%b %e %H:%M %Y'')、 ファイル名となっています。

-x  指定されアーカイブメンバを、コマンドライン引数で指定されたファイルに 展開します。メンバが指定されなかった場合には、アーカイブ内の全てのメンバが カレントディレクトリに展開されます。

    ファイルが存在しなかった場合には、新たに作成されます。 存在していた場合には、その所有者とグループは変更されません。 ファイルのアクセス時刻や変更時刻は、それを展開した時刻になります (が、 -o オプションを参照して下さい)。 ファイルのパーミッションは、そのファイルがアーカイブ内に格納された時点のもの に設定されます。 この操作は、ユーザが展開されるファイルの所有者ではなくスーパユーザでもない 場合には失敗します。

ar ユーティリティは 成功時には 0 を、エラーが起こった時は 0 より大きな値を返します。

環境変数
TMPDIR
    テンポラリファイルを作成する時に利用するディレクトリのパス名

関連ファイル
/tmp
    テンポラリファイルを作成するディレクトリのデフォルト
ar.XXXXXX
    テンポラリファイル

互換性
デフォルトでは、 ar は古いアーカイブとは互換性のないアーカイブを作成するかもしれません。 というのも、15 文字より長い名前を持つアーカイブメンバを格納する時に 用いられるフォーマットが変更されたためです。 ar のこのインプリメントでは、 古いアーカイブの読み書きを (-T オプションを使って) 行う上では、 前のバージョンの ar と下位互換があります。 -T オプションは互換性のためだけに用意されており、 将来のリリースでは削除されるかもしれません。詳細は ar(5) を参照して下さい。

標準
ar ユーティリティは p1003.2 のスーパーセットを提供しています。

関連項目
ld(1), ranlib(1), strmode(3), ar(5)