Daily Command--ar
功能说明:
建立或修改档案文件(archive),或是从档案文件中提取文件
语法:
ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][档案文件][成员文件]
包名称:
binutils
补充说明:
ar可以集合许多文件(成员文件),称为单一的档案文件。在档案文件中,所有成员文件都保留原来的属性与权限。ar也可以为档案文件建立符号表(Symbol table),功能如同文件的索引,以便直接调用档案文件中的成员文件。
第一类参数([-dmpqrtx])是命令参数,指定ar要执行的工作。
第二类参数([abcfiosSuvV])为可选参数,用来指定工作的选项。
参数:
命令参数
-d |
删除档案文件中的成员文件 |
-m |
变更成员文件在档案文件中的次序。如果没指定第2个参数,则-m参数会将指定的成员文件移动到档案文件的最后面 |
-p |
显示档案文件中的成员文件的额、内容。如果没有指定[成员文件]参数,则显示档案文件中全部成员成员文件的内容。 |
-q |
将文件附加在档案文件末尾,不用检查档案文件中是否有重复的成员文件 |
-r |
将文件插入档案文件中。若文件重复,则取代原有的成员文件 |
-t |
显示档案文件中所包含的文件 |
-x |
自档案文件中取出成员文件(档案文件中仍留有该成员文件) |
可选包参数
a<成员文件> |
将文件插入档案文件中指定的成员文件之后 |
b<成员文件> |
将文件插入档案文件中指定的成员文件之前 |
c |
建立档案文件 |
f |
为避免过长的文件名不兼容于其他系统的ar命令,因此可利用此参数,截掉要放入档案文件中过长的成员文件名称 |
i<成员文件> |
将文件插入档案文件中指定的成员文件之前(与b的作用相同) |
o |
保留档案文件中文件的日期。若不设置此参数,文件自档案文件中抽取出来时,文件日期将更改为现在的日期 |
s |
若档案文件中包含对象模块,可利用此参数建立档案文件的符号表。档案文件建好符号表后,其他程序便可调用档案文件中的对象 |
S |
不产生符号表。若档案文件很庞大时,可利用此参数加快程序的执行速度 |
u |
只将日期较新的文件插入档案文件中 |
v |
程序执行时显示详细的信息 |
V |
显示版本信息 |
范例:
- 生成档案文件,并列出其包含的内容
root@EricZhou:~/sda2/test# ls
file1 file2 file3 file4
root@EricZhou:~/sda2/test# ar -rv arfile file1 file2 file3 file4 ----生成档案文件arfile
ar: creating arfile
a - file1
a - file2
a - file3
a - file4
root@EricZhou:~/sda2/test# ar -t arfile ----列出档案文件所包含的内容
file1
file2
file3
file4
root@EricZhou:~/sda2/test#
- 列出档案文件中所有成员文件的内容:
root@EricZhou:~/sda2/test# ar -p arfile
Welcome,here is file1.
Welcome,here is file2.
Welcome,here is file3.
Welcome,here is file4.
root@EricZhou:~/sda2/test#
- 以较详细的方式列出档案文件arfile的内容
root@EricZhou:~/sda2/test# ar -pv arfile
<file1>
Welcome,here is file1.
<file2>
Welcome,here is file2.
<file3>
Welcome,here is file3.
<file4>
Welcome,here is file4.
root@EricZhou:~/sda2/test#
- 列出档案文件中某个成员文件的内容
root@EricZhou:~/sda2/test# ar -p arfile file1
Welcome,here is file1.
root@EricZhou:~/sda2/test#
- 将newfile加入档案文件中file2之前
root@EricZhou:~/sda2/test# ar -rbv file2 arfile newfile
a - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
newfile
file2
file3
file4
root@EricZhou:~/sda2/test#
- 将newfile移动到档案文件最后面
root@EricZhou:~/sda2/test# ar -mv arfile newfile
m - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
file3
file4
newfile
root@EricZhou:~/sda2/test#
- 将档案文件中的newfile重新移动到file2文件之前
root@EricZhou:~/sda2/test# ar -mbv file2 arfile newfile
m - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
newfile
file2
file3
file4
root@EricZhou:~/sda2/test#
- 将档案文件中的newfile移动到file2文件之后
root@EricZhou:~/sda2/test# ar -mav file2 arfile newfile
m - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
newfile
file3
file4
root@EricZhou:~/sda2/test#
- 取出档案文件中的newfile,但仍保留这个文件在档案文件中
root@EricZhou:~/sda2/test# ar -xv arfile newfile
x - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
newfile
file3
file4
root@EricZhou:~/sda2/test# ls -l newfile
-rw-r--r-- 1 root root 25 2013-03-08 09:44 newfile(时间为取出时间)
root@EricZhou:~/sda2/test#
- 取出档案文件中的newfile,保留取出文件的更改时间
root@EricZhou:~/sda2/test# ar -xov arfile newfile
x - newfile
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
newfile
file3
file4
root@EricZhou:~/sda2/test# ls -l newfile
-rw-r--r-- 1 root root 25 2013-03-08 09:17 newfile(时间为原本在文件中的时间)
root@EricZhou:~/sda2/test#
- 删除档案文件中的newfile
root@EricZhou:~/sda2/test# ar -dv arfile newfile
d - newfile
root@EricZhou:~/sda2/test# ar -t newfile
ar: newfile: File format not recognized
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
file3
file4
root@EricZhou:~/sda2/test#
- 将file2加入到档案文件中,不用检查是否有重复的成员文件
root@EricZhou:~/sda2/test# ar -qv arfile file2
a - file2
root@EricZhou:~/sda2/test# ar -t arfile
file1
file2
file3
file4
file2
root@EricZhou:~/sda2/test#