在Linux众多命令中,install命令和cp命令都能拷贝文件,但在用法上有些区别,不少人在使用的时候不知如何选择,下面小编就教你如何区分install命令和cp命令。一起去看看吧!
它们之间的区别主要如下:
1、最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件。这是因为往正在使用的文件中写入内容可能会导致一些问题,比如说写入正在执行的文件可能会失败,比如说往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用install先删除后写入(会生成新的文件句柄)的方式去安装就能避免这些问题了;
2、install命令会恰当地处理文件权限的问题。比如说,install-c会把目标文件的权限设置为rwxr-xr-x;
3、install命令可以打印出更多更合适的debug信息,还会自动处理SElinux上下文的问题。
------------------------------------分割线------------------------------------
当时在编译LFS6的时候,一直搞不懂install的命令和cp以及和chmod,chgrp的区别?
工作之后才明白一个Running的进程不能随便进行cp,经常会提示textbusy",运维部的前辈们给的建议是采用mv来替代cp,今天看起来前辈好像不知道install这个命令啊。
现在就简单介绍一下install命令。
installcopy文件列表且同时能够设置文件的属性(包括owner,group),通常用在Makefiles中用来copy程序到指定的目录。
常见的用法有以下3中形式:
1:install-d[option]DIRECTORY[DIRECTORY.。。]支持多个。类似mkdir-p支持递归。
例如:install-da/b/ce/f结果和mkdir-pa/b/ce/f一样。
2:install[option]SOURCEDEST
复制SOURCE文件(测试不能是目录)到DESTfile(文件)。
installa/ec结果类似cpa/ec#注意c必须是文件。
有用选项-D
install-Dxa/b/c#效果类似mkdir-pa/b&&cpxa/b/c
3:install[option]SOURCE[SOURCE.。。]DIRECTORY
复制多个SOURCE文件到目的目录。
installa/*d其中d是目录。
有用选项
-b:自动备份。
-m:设置安装文件的权限
-p:保留文件的timestamps.也就是说文件的timestaamps和source文件一样。当我们想要利用安装文件的mtime来跟踪文件的build时间而不是安装时间。
-s:Stripthesymboltablesfrominstalledbinaryexecutables.
-S:备份文件的后缀。
install-S.baknewold#old文件自动被mv为old.bak.
-v:verbose,打印install的文件的详细信息。
`-c‘
Ignored;forcompatibilitywitholdUnixversionsof`install’。#用来兼容旧版的unix.
-C:(大写)
安装文件,但是如果目标文件和源文件一样(判断方法需要看看代码确认)就跳过,这样的好处是能够保持一样文件的mtime.
上面就是Linuxinstall命令和cp命令的用法介绍了,其中最大的区别就是在复制目标文件存在的时候,install可以先删除再使用,以免拷贝失败。希望此文档可以帮助到大家!