AR(1)

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

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

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

ファイルはアーカイブ内では、一つの要素で名づけられます。 つまり、スラッシュ(``/'')を含むパスで参照されたファイルは そのパスの最後の要素によって名づけられるのです。 コマンドラインに並べられたパスをアーカイブ内のファイル名と一致させる ときには、パスの最後の要素のみが比較されます。

すべての情報およびエラーメッセージは、コマンドラインにパスが 指定されていれば、それを利用します。指定されていなければ、 アーカイブ内の名前を利用します。もし、アーカイブ内で複数のファイルが 同じ名前で存在しており、ある操作を行うためにアーカイブ ファイルを``選択''するようコマンドラインにパスを並べた場合は、 最初に 名前の一致したファイルのみが選択されます。

ar の通常の利用方法は、ローダ( ld(1) を参照してください)に適したライブラリの作成および整備です。しかし、 この目的に限定されているのではありません。 オプションは以下の通りです:

-a  -r や -m と共に用いられ、格納位置を修正します。 ファイルはアーカイブ内の要素である position の 後ろに 格納もしくは移動されます。 position を指定する必要があります。

-b  -r や -m と共に用いられ、格納位置を修正します。 ファイルはアーカイブ内の要素である position の 前に 格納もしくは移動されます。 position を指定する必要があります。

-c  通常、アーカイブが作成されるときは、その動作状況についての 情報が、標準エラー出力に出力されます。 -c オプションが指定されると、 ar はこの出力を行わなくなります。

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

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

-m  指定されたアーカイブファイルをアーカイブ内に移動します。 -a, -b, -i のオプションの一つが指定された場合は、ファイルは アーカイブ内のファイルである の前後に移動されます。これらのオプションが指定されなかった場合には、 ファイルはアーカイブの最後に移動されます。

-o  展開されたファイルのアクセス時刻および修正時刻を、アーカイブに 格納された時点での修正時刻に合わせます。この操作は、ユーザが そのファイルの所有者でもスーパユーザでもない場合には失敗します。

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

-q  指定されたファイルをアーカイブにすばやく追加します。アーカイブが 存在しない場合には、新たなアーカイブファイルが作成されます。 ファイルがアーカイブ内のファイルと重複していないかどうかを 調べないため、大きなアーカイブをすこしづつ作っている場合には -r オプションより非常に高速です。

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

-T  アーカイブメンバを選択するとき、およびアーカイブメンバに 名前をつけるとき、アーカイブメンバ名やコマンドラインファイル名の 最初の15文字だけを利用するようにします。古いアーカイブ形式は 名前として16バイトの領域がありましたが、古いアーカイバや ローダの中には、その領域すべてを使うような名前を扱えない実装の ものもあったのです。これは、最初の15文字が等しいファイル名は 後で混同されるかもしれない、ということを意味しています。 もし、いずれかのファイル名が切り捨てられた場合には、標準エラー 出力に警告メッセージが出力されます。(さらに情報を得るには、 ar(5) を参照してください。)

-t  指定されたファイル名を、アーカイブ内に格納されている順で、 1行に1つずつ出力します。もしファイル名が指定されなかった場合には、 アーカイブ内のすべてのファイル名が出力されます。

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

-v  動作状況を詳しく出力します。 -d, -m, -q, オプションと共に 指定された場合には、 ar はアーカイブの変更について、ファイル ごとに報告します。この情報は、空白で区切られた3つの フィールド、すなわちオプション名、ダッシュ(``-'') 、 ファイル名から構成されています。 -r オプションと共に使われた 場合には、 ar は上と同様の出力を行いますが、最初の文字は ファイルがアーカイブに追加された場合は ``a''、アーカイブ内に 既にあるファイルを置き換えた場合には ``r'' となります。

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

    -t オプションと共に指定された場合には、 ar は ``ls -l'' の形式で アーカイブのメンバについての情報を出力します。この情報は、 空白で区切られた8つのフィールド、すなわち、ファイルの パーミッション( strmode(3) を参照してください)、一つの スラッシュ(``/'')で区切られた、10進数表現のユーザIDと グループID、ファイルの大きさ(バイト単位)、ファイルの 修正時刻( 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)