免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 一生有你llx

[系统管理] Linux基础命令 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-03 15:39 |显示全部楼层
本帖最后由 一生有你llx 于 2019-02-04 08:32 编辑

tr
      删除或者更改文件中的字符串,这个指令一般需要两个字符集。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      tr [选项]  set1 set2

2、选项列表
选项
说明
--help
显示帮助文档
--version
显示版本信息
-c | -C | --complement
使用SET1的补码
-d | --delete
删除字符集1中指定的内容
-s | --squeeze-repeats
将set1中重复出现的内容,替换成单次出现的内容
-t | --truncate-set1
首先将SET1按照SET2的长度截断
      集合指定为字符串。大多数人代表自己。解释序列是:
序列
说明
\NNN
具有八进制值nnn的字符(1到3位八进制数字)
\\
反斜线符号
\a
可听BEL
\b
(键盘的)退格键
\f
换页
\n
换行
\r
返回
\t
水平tab
\v
垂直tab
CHAR1-CHAR2
从CHAR 1到CHAR 2的所有字符按升序排列
[CHAR*]
拷贝set2中的字符,长度为set1的长度
[CHAR*REPEAT]
重复拷贝
[:alnum:]
所有字母和数字
[:alpha:]
所有字母
[:blank:]
所有的水平空白
[:cntrl:]
所有的控制字符
[:digit:]
所有的数字
[:graph:]
所有的可打印的字符,不包括空格
[:lower:]
所有的小写字母
[:print:]
所有的可打印字符,包括空格
[:punct:]
所有标点符号
[:space:]
所有的水平和垂直空格
[:upper:]
所有的大写字母
[digit:]
所有的十六进制数字
[=CHAR=]
所有等价于CHAR的字符
      如果没有给出‘-d’,同时出现SET1和SET2,则会发生翻译。‘-t’只能在翻译时使用。通过在必要时重复SET1的最后一个字符,Set2被扩展到SET1的长度。Set2的多余字符将被忽略。只有[:lower:]和[:upper:]保证按升序展开;在set2翻译时使用,它们只能成对使用以指定大小写转换。‘-s’在不翻译或删除时使用SET1;压缩使用SET2,并在翻译或删除后发生。

3、实例
      1)删除内容
[root@localhost weijie]# cat 1.c
hello world, i am david. i love linux, love code.
[root@localhost weijie]# tr -d hello < 1.c        //1.c的内容输出到tr,然后删除出现的字符
wrd, i am david. i v inux, v cd.                   //这里并不是删除一个单词hello,而是删除出现的这5个字母
      2)将文件中的小写字母替换成大写
[root@localhost weijie]# tr -s a-z A-Z < 1.c
HELO WORLD, I AM DAVID. I LOVE LINUX, LOVE CODE.

做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk 4.gif


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-04 10:23 |显示全部楼层
touch
      将文件的访问时间和修改时间修改为当前时间。如果指定的文件不存在,那么将会创造空文件,除非指定-c或-h选项。文件参数字符串‘-‘被专门处理,并导致touch更改与标准输出相关联的文件的时间。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      touch [选项]  file

2、选项列表
选项
说明
--help
显示帮助文档
--version
显示版本信息
-a
只改变访问时间
-c | --no-create
不创建文件
-d | --date=time
设置为指定的时间,而不是当前的时间
-f
忽略
-h
只改变符号链接
-m
只改变修改时间
-r | --reference=file
使用指定文件的时间
-t
使用CCYYMMDDhhmmss时间
--time=WORD
改指定的时间:Word为access、atime或use
      “--date=STRING”是一种主要自由格式的人类可读的日期字符串,例如“Sun,2月29日16:21:42-0800”或“2004-02-29 16:21:21:42”,甚至“下星期四”。日期字符串可能包含指示日历日期、日时间、时区、周中日、相对时间、相对日期和数字的项。空字符串表示一天的开始。

3、实例
      1)创建文件
[root@localhost weijie]# ls                    //文件不存在
1.c  1.c~  2.c  3.c  4.c  4.c~  5.c  Tsplitaa  Tsplitab  Tsplitac  Tsplitad xaa  xab  xac
[root@localhost weijie]# touch -c 6.c          //使用选项-c,不创建文件
[root@localhost weijie]# ls
1.c  1.c~  2.c  3.c  4.c  4.c~  5.c  Tsplitaa  Tsplitab  Tsplitac  Tsplitad xaa  xab  xac
[root@localhost weijie]# touch 6.c             //不使用任何选项,创建文件
[root@localhost weijie]# ls
1.c  1.c~  2.c  3.c  4.c  4.c~  5.c  6.c Tsplitaa  Tsplitab  Tsplitac  Tsplitad  xaa  xab  xac
      2)用指定的文件来修改目标文件时间
[root@localhost weijie]# ll 1.c 2.c               //查看文件时间
-rwxr--r-- 1 root david 50 9月 14 10:07 1.c
-rwxr--r-- 1 root root  11 9月  13 16:52 2.c
[root@localhost weijie]# touch -r 2.c 1.c       //1.c的时间修改和2.c一样
[root@localhost weijie]# ll 1.c 2.c              //查看文件时间
-rwxr--r-- 1 root david 50 9月 13 16:52 1.c
-rwxr--r-- 1 root root  11 9月  13 16:52 2.c

[color=rgb(68, 68, 6]做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk
[color=rgb(68, 68, 6]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-05 19:48 |显示全部楼层
umask
      指定创建文件时所需要的权限掩码,掩码的执行权限对于文件没有效果。如果模式以数字开头,则解释为八进制数字;否则解释为符号模式掩码,类似于chmod(1)所接受的模式掩码。如果省略模式,则打印掩码的当前值。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      umask [选项]  mask

2、选项列表
选项
说明
-S
以字符方式表示权限掩码
-P
显示当前权限掩码

3、实例
1)查看mask,创建目录
[root@localhost weijie]# umask                       //不用任何参数,可以查看掩码,0022
0022
[root@localhost weijie]# mkdir test               //创建目录
[root@localhost weijie]# ll -d test               //查看
drwxr-xr-x 2 root root 4096 9月  14 10:44 test   //权限755
2)创建文件
[root@localhost weijie]# touch 11.c               //创建文件
You have new mail in /var/spool/mail/root
[root@localhost weijie]# ll 11.c                  //查看权限
-rw-r--r-- 1 root root 0 9月  14 10:46 11.c     //权限644,因为掩码中的执行权限,对文件没有效果
3)修改掩码,创建目录
[root@localhost weijie]# umask 0033              //修改掩码
[root@localhost weijie]# mkdir test/             //创建目录
[root@localhost weijie]# ll -d test/             //查看权限
drwxr--r-- 2 root root 4096 9月  14 10:48 test/           //权限是744




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-06 20:40 |显示全部楼层
cksum
      检查文件的crc是否正确,统计文件的字节数。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      cksum [选项]  file

2、选项列表
选项
说明
--help
显示帮助文档
--version
显示版本信息

3、实例
      检测文件
[root@192 weijie]#cksum 1.c
//crc校验字节数文件名
4188905735   12      1.c



sum
      计算文件的校验码和块数,可以采用BSD和system V两种算法。如果没有指定文件,或者文件名是“-”,那么文件就是标准输入。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      sum [选项]  file

2、选项列表
选项
说明
--version
显示版本信息
--help
显示帮助文档
-r
使用system v算法,使用1k字节。
-s
使用BSD算法,使用512字节

3、实例
      1)BSD算法
[root@192 weijie]# sum -r 1.c
//校验块数
35112     1
      2)systemV算法
[root@192 weijie]#sum -s 1.c
//校验块数文件名
543     1     1.c




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-07 08:51 |显示全部楼层
rm
      删除文件和目录,默认情况下不会删除目录。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      rm [选项]  file

2、选项列表
选项
说明
--help
显示帮助文档
--version
显示版本信息
-f | --force
强制执行,不交互
-i
交互模式,每删除一个文件都要询问
-I
在删除三个以上的文件之前,或者在递归删除之前,提示一次。“-I“的侵扰性不如“-i”,但仍能免受大多数错误的侵扰。
--interactive[=WHEN]
根据时间提示:从不(never),一次(-i),或始终(-i)。没有指定WHEN,总是提示
--one-file-system
递归删除层次结构时,跳过与相应命令行参数不同的文件系统上的任何目录。
--no-preserve-root
删除根目录
--preserve-root
不删除根目录,默认的
-r | -R | --recursive
递归的方式删除子目录
-v | --verbose
显示详细执行过程

3、说明
      默认情况下,rm不删除目录。使用--recursive (-r or -R)选项也可以删除每个列出的目录及其所有内容。要删除名称以“-”开头的文件,例如“-foo”,请使用以下命令之一:
rm  --  -foo
rm  ./-foo
      注意,如果使用rm删除文件,通常可以恢复该文件的内容。如果您想要更多的保证内容是真正不可恢复的,请考虑使用shred。

4、实例
      1)删除te开头的文件
[root@localhost weijie]# ls
11.c  1.c 1.c~  2.c  3.c 4.c  4.c~  5.c 6.c  te000  te001  test
[root@localhost weijie]# rm te*
rm:是否删除普通文件 "te000"?y
rm:是否删除普通文件 "te001"?y
rm: 无法删除"test": 是一个目录          //无法删除目录
      2)删除目录
[root@localhost weijie]# rm -rf test/             //强制删除目录
[root@localhost weijie]# ls
11.c  1.c  1.c~  2.c  3.c  4.c  4.c~  5.c  6.c




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-08 11:03 |显示全部楼层
tmpwatch
      删除最近一段时间没有访问的文件,时间以小时为单位,节省磁盘空间。tmpwatch递归删除给定时间未被访问的文件。通常,它用于清理用于临时保存空间(如/tmp)的目录。当更改目录时,tmpwatch对可能的争用条件非常敏感,如果检测到错误,就会退出。它不遵循它正在清理的目录中的符号链接(即使给出一个符号链接作为它的参数),它不会切换文件系统,跳过根用户的lost+found目录,只删除空目录、常规文件和符号链接。
     默认情况下,tmpwatch根据文件的atime(访问时间),而不是它们的Mtime(修改时间)来确定文件的日期。如果文件在“ls-l”暗示应该删除时没有被移除,请使用“ls-u”检查它们的数据,以确定这是否解释了问题的原因。
     如果指定了--atime”,“--ctime”或者“--mtime”选项,那么删除文件的时间由他们中的最大值决定。如果“--dirmtime”选项意味着忽略目录的atime,即使使用了“—atime”选项。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     tmpwatch [选项]  time  file
     tmpwatch  [-u|-m|-c]  [-MUadfqstvx]  [--verbose]  [--force] [--all]  [--nodirs]  [--nosymlinks]  [--test]  [--fuser]  [--quiet]
     [--atime|--mtime|--ctime]  [--dirmtime]  [--exclude path]  [--exclude-user user]  time  dirs

2、选项列表
选项
说明
-u | --atime
根据文件的atime(访问时间)做出删除文件的决定。请注意,定期更新的文件系统扫描使目录保持最近的状态。
-m | --mtime
根据文件的Mtime(修改时间)而不是atime做出删除文件的决定。
-c |  -ctime
根据文件的ctime(Inode Changing Time)而不是atime来决定删除文件;对于目录,根据mtime做出决定
-M | --dirmtime
根据目录的Mtime(修改时间)而不是atime作出删除目录的决定;完全忽略目录的atime
-a | -all
删除所有文件类型,而不仅仅是常规文件、符号链接和目录。
-d | --nodirs
不要尝试删除目录,即使它们是空的。
-f | -force
强制删除,即使root用户没有写的权利
-l | --nosymlinks
不删除符号链接
-q | --quite
只报告致命错误
-s | --fuser
尝试在删除文件之前使用“fuser”命令查看文件是否已打开。默认情况下未启用。在某些情况下确实有帮助,但不是全部。依赖于/sbin中安装的fuser。不支持HPUX或Solaris
-t | --test
不删除,只是演示要做什么
-U | --exclude-user=user
不删除指定所有者的文件,可以指定用户名,也可以指定用户ID
-v | --verbose
显示详细信息
-x | --exclude
跳过目录及其内部文件,如果路径不存在,则它必须是不包含符号链接的绝对路径。
-X | --exclude-pattern=pattern
跳过路径匹配模式;如果目录匹配模式,则其中包含的所有文件也将被跳过。模式必须匹配不包含符号链接的绝对路径。

3、实例
     1)删除当前目录1小时内没有访问的文件
[root@192 weijie]# ls
1.c   2.c   3.c   magic.mgc  test01 test03     wjtpflR
1.c~  2.c~  3.c~  my.iso     test02 wj234.q1C
You have new mail in /var/spool/mail/root
[root@192 weijie]# tmpwatch 1 .
[root@192 weijie]# ls
1.c  1.c~  2.c
     2)不删除指定用户的文件
[root@192 weijie]# ll
总用量 12
-rwxr--r-- 1 root david 12 9月  13 16:49 1.c         //文件所有者都是root
-rw-r--r-- 1 root david 30 9月  13 16:43 1.c~
-rwxr--r-- 1 root root  11 9月  13 16:52 2.c
[root@192 weijie]# tmpwatch -U root 1 .            //不删除root用户的文件
[root@192 weijie]# ls
1.c  1.c~ 2.c




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-09 07:39 |显示全部楼层
mkdir
      如果目录不存在,那么就创建目录。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      mkdir [选项]  dir

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-m | --mode=MODE
设置目录的权限
-p | --parents
创建多层目录的时候,如果父目录不存在,那么首先创建父目录
-v | --vervose
显示执行过程

3、实例
      1)创建一个最大权限的目录
[root@localhost weijie]# mkdir -m 777 test
[root@localhost weijie]# ls -l
总用量 360
-rw-r--r-- 1 root root      0 9月   7 09:11 1.c
-rw-r--r-- 1 root root 358400 9月   7 15:46 my.iso
drwxrwxrwx 2 root root   4096 9  10 11:33 test
      2)创建目录及其父目录
[root@localhost weijie]# mkdir -v test01/test           //目录test01不存在,无法在其下创建test目录
mkdir: 无法创建目录"test01/test": 没有那个文件或目录
[root@localhost weijie]# mkdir -p -v test01/test         //使用选项-p,当目录test01不存在的时候,首先创建test01
mkdir: 已创建目录"test01"
mkdir: 已创建目录"test01/test"
You have new mail in /var/spool/mail/root




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-10 14:53 |显示全部楼层
chattr
      改变文件的属性,这个命令只有超级用户才能使用。这个指令适用于ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs系统。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      chattr [-RVf] [ -v version ]  + | - | =[属性]  file
      运算符‘+‘使所选属性被添加到文件的现有属性中;’-’使它们被删除;‘=’使它们成为文件所拥有的唯一属性。

2、选项列表
选项
说明
-R
递归的方式修改目录及其子目录下的文件属性
-V
显示详细执行过程
-f
跳过错误信息
-v version
设置文件或者目录的版本号
     属性
选项
说明
a
只能以append的方式打开
A
最后修改时间不被记录
c
对文件进行压缩,而读取的时候会得到解压数据
D
同步目录更新
d
不进行备份
E
压缩文件有错误,这个属性不能被用户手动修改
e
文件使用扩展区来映射到磁盘
-I
目录使用hash树来索引,这个属性不能被用户手动修改
h
文件大小超过2TB,这个属性不能被用户手动修改
i
文件不能被修改,但是可以删除或者重命名
s
将数据块清零并存入磁盘
S
同步更新。将文件修改之后,结果写入磁盘
u
预防意外删除
-T
目录层次结构顶部
-X
压缩原始存取。虽然lsattr(1)可以显示它,但它目前不能使用chattr(1)进行设置或重置。
-Z
压缩脏文件。虽然它可以由lsattr(1)显示,但不能使用chattr(1)设置或重置

3、实例
      1)增加a属性,设置版本号。显示详细的执行过程
[root@192 weijie]# chattr -v 1 -V +a 1.c
chattr 1.41.12 (17-May-2010)
1.c的标志被设为-----a-------e-             //这里显示出最后的结果
Version of 1.c set as 1
      2)删除a属性,增加c属性
[root@192 weijie]# chattr -Vv 2 -a +c 1.c
chattr 1.41.12 (17-May-2010)
1.c的标志被设为 --------c----e-
Version of 1.c set as 2




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-11 10:42 |显示全部楼层
lsattr
      显示指定文件或者目录的属性。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      lsattr [选项]  file

2、选项列表
选项
说明
-v
列出文件版本号
-R
递归列出所有子目录中文件的属性
-a
列出所有文件的属性,包含隐藏文件
-d
列出目录的属性,而不是它里面内容的属性
-V
显示执行过程

3、实例
      1)列出文件属性
[root@192 weijie]# lsattr 1.c
-------------e- 1.c
      2)列出目录下所有文件属性
[root@192 weijie]#lsattr -a test01
-------------e- test01/.
-------------e- test01/..
-------------e- test01/1.c~
-------------e- test01/1.c
      3)列出目录属性
[root@192 weijie]# lsattr -d test01
-------------e- test01


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
发表于 2018-12-12 15:43 |显示全部楼层
ar
      ar指令可以创建、修改库,也可以从库中提取单个模块。库是一个单独的文件,里面包含了按照特定结构组织起来的其他文件,我们称作member。归档文件通常是一个二进制文件,我们一般将归档文件当作库来使用。原始文件的内容、模式(权限)、时间戳、所有者和组保存在存档中,并可在提取时恢复。
     GNU ar可以维护其成员具有任意长度的名称的档案;但是,根据您的系统上对ar的配置方式,可以对成员名长度进行限制,以便与其他工具维护的存档格式兼容。如果存在,限制通常是15个字符(典型的与a.out相关的格式)或16个字符(典型的与coff相关的格式)。
     当您指定修饰符的时候,ar会为存档中可重定位的对象模块中定义的符号创建一个索引。创建之后,每当ar对其内容进行更改时,这个索引就会在存档中更新(除了Q更新操作外)。具有这样一个索引的归档可以加速链接到库,并允许库中的例程相互调用,而不考虑它们在存档中的位置。您可以使用“nm -s”或“nm --print-armap”列出此索引表。如果存档缺少表,则可以使用另一种称为ranlib的ar形式来添加表。
     GNU ar可以随意创建一个瘦存档,其中包含一个符号索引和对档案成员文件的原始副本的引用。这样的存档对于构建用于本地构建的库非常有用,因为在本地构建中,可重新定位的对象将保持可用,而复制每个对象的内容只会浪费时间和空间。薄档案也是扁平的,因此将一个或多个档案添加到一个瘦归档中将单独添加嵌套归档的元素。存档元素的路径是相对于归档本身存储的。
     GNU Ar被设计成与两个不同的设施兼容。您可以使用命令行选项来控制它的活动,比如Unix系统上的不同类型的ar;或者,如果您指定了单一命令行选项-M,您可以使用标准输入提供的脚本来控制它,比如MRI "librarian"程序。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     ar  [--plugin name]   [-X32_64]  [-]p[mod [relpos]  [count]]   archive   [member...]

2、选项列表
     GNU ar允许您在第一个命令行参数中按任意顺序混合操作代码p和修饰符标志mod。如果您愿意,可以用“-”开始第一个命令行参数。p键字母指定要执行的操作;它可能是以下任一操作,但您必须仅指定其中一个操作
操作代码
说明
c
创建归档文件
d
删除归档中的成员文件,将要删除的模块的名称指定为member。如果没有指定要删除的文件,则存档将保持不变
m
改变成员文件在归档中的顺序 。如果在多个成员中定义了一个符号,则存档中成员的排序会改变程序使用库链接的方式。如果在“m”中没有使用修饰符,那么在成员参数中命名的任何成员都会移动到归档文件的末尾;您可以使用a、b或i修饰符将它们移动到指定的位置。
p
将存档的指定成员打印到标准输出文件。如果指定了v修饰符,请在将其内容复制到标准输出之前显示成员名。
q
将文件附加在归档文件的最后。修饰符a、b和i不影响此操作;新成员总是放在归档的末尾。修饰符v在追加时使每个文件都有ar列表。因为这个操作的重点是速度,所以存档的符号表索引不会更新,即使它已经存在;您可以显式地使用ar或ranlib来更新符号表索引。但是,有太多不同的系统假设快速追加索引,因此GNU ar实现了q作为r的同义词。
r
将文件‘member’插入到归档文件,如果归档中存在要插入的文件,那么就覆盖。此操作与q的不同之处在于,如果现有成员的名称与要添加的成员匹配,则删除它们。如果成员中不存在‘member’,ar显示错误消息,并保持与该名称匹配的任何现有存档成员不受干扰。默认情况下,在文件末尾添加新成员;但您可以使用其中一个修饰符a、b或i请求相对于现有成员的位置。与此操作一起使用的修饰符v将引发插入的每个文件的一行输出。字母a或r,以指示文件是否被追加(没有删除旧成员)或被替换。
t
显示归档文件包含的文件列表。通常只显示成员名称;如果还希望查看模式(权限)、时间戳、所有者、组和大小,则还可以通过指定v修饰符来请求。如果未指定成员,则将列出存档中的所有文件。如果一个存档中有多个同名文件,只列出第一个实例;要查看它们,您必须要求一个完整的列表。
x
从归档文件中提取成员文件,您可以在此操作中使用v修饰符,在提取时请求ar列出每个名称。如果不指定成员,则提取存档中的所有文件。无法从瘦存档中提取文件。
     许多修饰符(Mod)可以紧跟p键,以指定操作行为的变化
修饰符
说明
a
在存档的现有成员之后添加新文件。如果使用修饰符a,则现有存档成员的名称必须作为relpos参数出现在归档规范之前。
b
在存档的现有成员之前添加新文件。如果使用修饰符b,则现有存档成员的名称必须作为relpos参数出现在归档规范之前。(与i相同)
c
创建档案。当您请求更新时,如果指定的存档不存在,则始终创建它。但是,除非事先指定通过使用此修饰符来创建警告,否则将发出警告。
D
在确定性模式下操作。当添加文件和存档索引时,对UID、GID、时间戳使用零,并对所有文件使用一致的文件模式。当使用此选项时,如果ar与相同的选项和相同的输入文件一起使用,则多次运行将创建相同的输出文件,而不管输入文件的所有者、组、文件模式或修改时间。
f
截断存档中的名称。GNU ar通常允许任意长度的文件名。这将导致它创建与某些系统上的本机ar程序不兼容的档案。如果这是个问题,那么当将f修饰符放在归档文件中时,可以使用f修饰符来截断文件名。
i
在存档的现有成员之前插入新文件。如果使用修饰符i,则现有存档成员的名称必须作为relpos参数出现在归档规范之前。(与b相同)
l
没有用的修饰符
N
使用计数参数。如果存档中有多个具有相同名称的条目,则使用此方法。从存档中提取或删除给定名称的实例计数
o
提取成员时保留成员的原始日期。如果不指定此修饰符,则从档案中提取的文件将加盖提取时间。
P
在存档中匹配名称时使用完整路径名称。GNU ar不能创建具有完整路径名的存档(这类档案不是POSIX投诉),但其他归档创建者可以。此选项将导致GNU ar使用完整的路径名匹配文件名,这在从另一个工具创建的归档文件中提取单个文件时非常方便。
s
将对象文件索引写入存档,或更新现有的索引,即使没有对归档进行其他更改。您可以在任何操作中使用此修饰符标志,也可以单独使用。在存档上运行ar等于在它上运行ranlib。
S
不要生成存档符号表。这可以加快构建一个大型库的几个步骤。结果存档不能与链接器一起使用。为了构建符号表,必须在ar的最后一次执行时省略S修饰符,或者必须在归档文件上运行ranlib。
T
将指定的归档文件设置为瘦存档。如果它已经存在并且是一个常规存档,则现有成员必须与存档目录相同。
u
通常,ar r将列出的所有文件插入存档中。如果只想插入比同名的现有成员更新的文件,请使用此修饰符。u修饰符仅允许用于操作r(替换)。特别是不允许使用组合qu,因为检查时间戳将失去操作q的任何速度优势。
v
显示详细执行过程
V
显示ar的版本
     AR忽略初始选项-x32_64,以便与AIX兼容。此选项产生的行为是GNU ar的默认行为。ar不支持任何其他-X选项;特别是,它不支持-x32,这是AIX ar的默认设置。
可选的命令行开关“--plugin name”使ar加载名为name的插件,这增加了对更多文件格式的支持。只有在工具链已启用插件支持的情况下,此选项才可用。
     @file选项,从文件中读取命令行选项。已读取的选项被插入以代替原始的@file选项。如果文件不存在或无法读取,则将按字面处理该选项,而不删除该选项。file中的选项用空格分隔。可以在选项中包含空格字符,方法是将整个选项包围在单引号或双引号中。任何字符(包括反斜杠)都可以通过前缀所包含的字符来包括在反斜杠中。file本身可能包含额外的@file选项;任何此类选项都将被递归处理。

3、实例
1)创建归档文件
[root@localhost weijie]# ar -rc mlib.a 1.c 2.c           //创建归档
[root@localhost weijie]# ls
11.c  1.c  1.c~  2.c  3.c 4.c  4.c~  5.c  6.c  mlib.a
[root@localhost weijie]# ar -t mlib.a                      //查看归档的文件列表
1.c
2.c
2)在归档中插入文件
[root@localhost weijie]#ar -rc mlib.a 3.c              //插入3.c,此时归档中还没有3.c
[root@localhost weijie]#ar -t mlib.a                   //查看文件列表,3.c被加入
1.c
2.c
3.c
[root@localhost weijie]# ar -rc mlib.a 1.c            //插入1.c,注意此时1.c已经存在了
[root@localhost weijie]# ar -t mlib.a                  //查看文件列表,1.c已经被覆盖了
1.c
2.c
3.c
3)在归档的最后插入文件
[root@localhost weijie]# ar -q mlib.a 1.c             //是用选项q来追加到最后,注意这个和r是不一样的
[root@localhost weijie]# ar -t mlib.a                  //查看文件列表,新增加了1.c
1.c
2.c
3.c
1.c
4)从归档中删除文件
[root@localhost weijie]# ar -d mlib.a 1.c             //删除1.c
[root@localhost weijie]# ar -t mlib.a                  //查看文件列表,第一个1.c已经删除,但是最后还有一个
2.c
3.c
1.c
[root@localhost weijie]# ar -d mlib.a 1.c             //再次删除1C
[root@localhost weijie]# ar -t mlib.a                  //查看文件列表,1.c已经被删除
2.c
3.c




您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】
2022年1月13-15日,由IT168旗下ITPUB企业社区平台主办的第十四届中国系统架构师大会(SACC2021)将在云端进行网络直播。
为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。

大会官网
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP