
私はアーカイブを作成または管理するためのLinux / UNIXの「ar」コマンドについて話しています。
マニュアルによると、「m」修飾子を使用してアーカイブのメンバーを移動できます。しかし、何の例もありません。
マニュアルページには、「修飾子なしでmを使用すると、メンバー引数に名前を付けたすべてのメンバーがアーカイブの末尾に移動されます」と記載されているので、次のように動作する必要があると思います(そして成功しました)。
$ ar -t out.a
a.txt
b.txt
c.txt
d.txt
$ ar m out.a a.txt
$ ar -t out.a
b.txt
c.txt
d.txt
a.txt
$
"a.txt"ファイルが最後に正常に移動されました。
しかし、「a、b、またはi修飾子を使用して特定の位置に移動できます」に関しては問題があります。
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar ma out.a a.txt
ar: a.txt: File format not recognized
$
「a」は前方に移動し、「b」は後方に移動し、「i」はインデックスに移動することを意味すると思いましたが、修飾語の後に数字があるかもしれません。だから私は次のことを試みます:
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar ma 1 out.a a.txt
$ ar t out.a
b.txt
c.txt
d.txt
a.txt
$
「a.txt」はまだ終わりに移動します!
ファイルを後ろに移動したい場合は、まだ最後に移動されます。
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar mb 1 out.a c.txt
$ ar t out.a
a.txt
b.txt
d.txt
c.txt
$
では、どのように使用しますか?
答え1
~からar
私のOpenBSDシステムのGNUドキュメントa
修飾子を説明してください。
a Add new files after an existing member of the archive. If you use
the modifier a, the name of an existing archive member must be
present as the relpos argument, before the archive specification.
つまり、指定する必要があります。名前アイテムを以降(または前)に移動するには、メンバーのアイテムをアーカイブしてください b
。POSIX仕様 ar
posname
これに関する詳細は、説明(GNU文書に記載されている)に記載されています。relpos
posname
相対位置指定に使用されるアーカイブのファイル名。オプション
-m
とを参照してください-r
。
以下をテストします(と標準オプションを使用-
)。
$ ar -t out.a
a.txt
b.txt
c.txt
d.txt
a.txt
次に移動した後c.txt
:
$ ar -m -a c.txt out.a a.txt
$ ar -t out.a
b.txt
c.txt
a.txt
d.txt
このi
修飾子はのエイリアスですb
。
POSIXでは、次のように言及しています。
-i
オペランドと呼ばれるアーカイブのファイルの前に
posname
(と同じ)アーカイブの新しいファイルを配置します-b
。