linux install下令和cp下令的区别
基本上,在Makefile里会用到install,其他场合会用cp下令。
它们完成相反的职责——拷贝文件,它们之间的区别主要如下:
1、最紧张的一点,假如目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删撤除原先的文件然后写入新文件。这是由于往正在使用的文件中写入内容约莫会招致一些成绩,好比说写入正在实行的文件约莫会失败,好比说往以前在持续写入的文件句柄中写入新文件会产生错误的文件。而使用install先删除后写入(会天生新的文件句柄)的办法去安装就能制止这些成绩了;
2、install下令会恰当地处理文件权限的成绩。好比说,install -c会把目标文件的权限设置为rwxr-xr-x;
3、install下令可以打印出更多更切合的debug信息,还会主动处理SElinux上下文的成绩。
------------------------------------支解线
------------------------------------
事先在编译LFS 6 的时分, 不休搞不懂 install 的下令 和 cp 以及和 chmod, chgrp 的区别?
事情之后才明白一个Running 的历程不克不及任意举行 cp , 常常会提示 "text busy", 运维部的先辈们给的发起是接纳mv 来交换 cp , 今天看起来先辈仿佛不晓得install 这个下令啊.
如今就简便先容一下 install 下令.
install copy 文件列表且同时可以设置文件的属性(包含 owner, group) , 通常用在 Makefiles 中 用来copy 步骤到指定的目次.
稀有的用法有以下3中情势:
1: install -d [option] DIRECTORY [DIRECTORY...] 支持多个. 相似 mkdir -p 支持递归.
比如: install -d a/b/c e/f 后果和 mkdir -p a/b/c e/f 一样.
2: install [option] SOURCE DEST
复制 SOURCE 文件(测试不克不及是目次) 到DEST file(文件) .
install a/e c 后果相似 cp a/e c # 注意c必需是文件.
有效选项 -D
install -D x a/b/c # 后果相似 mkdir -p a/b && cp x a/b/c
3: install [option] SOURCE [SOURCE...] DIRECTORY
复制 多个SOURCE 文件到目标目次.
install a/* d 此中 d 是目次.
有效选项
-b :主动备份.
-m : 设置安装文件的权限
-p :保存文件的timestamps. 也就是说文件的timestaamps 和 source 文件一样. 当我们想要使用安装文件的mtime来跟踪文件的build时间而不是 安装时间.
-s : Strip the symbol tables from installed binary executables.
-S : 备份文件的后缀.
install -S .bak new old #old 文件主动被 mv 为 old.bak.
-v: verbose ,打印install 的文件的具体信息.
`-c'
Ignored; for compatibility with old Unix versions of `install'. #用来兼容旧版的unix.
-C: (大写)
安装文件, 但是假如目标文件和源文件一样( 推断办法必要看看代码确认) 就跳过, 如此的利益是 可以坚持一样文件的mtime.