在Makefile里会用到install,其他地方会用cp命令

主要区别:

  1. 如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件。这是因为往正在 使用的文件中写入内容可能会导致一些问题,比如说写入正在执行的文件可能会失败,比如说往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用 install先删除后写入(会生成新的文件句柄)的方式去安装就能避免这些问题了
  2. install命令会恰当地处理文件权限的问题。比如说,install -c会把目标文件的权限设置为rwxr-xr-x
  3. install命令可以打印出更多更合适的debug信息,还会自动处理SElinux上下文的问题

主要参数:

    --backup[=CONTROL]:为每个已存在的目的地文件进行备份。
-b:类似 --backup,但不接受任何参数。
-c:(此选项不作处理)。
-d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。
-D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。
-g,--group=组:自行设定所属组,而不是进程目前的所属组。
-m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。
-o,--owner=所有者:自行设定所有者 (只适用于超级用户)。
-p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。
-s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。
-S,--suffix=后缀:自行指定备份文件的<后缀>。
-v,--verbose:处理每个文件/目录时印出名称。
--help:显示此帮助信息并离开。
--version:显示版本信息并离开。

例子:

@install -d /usr/bin

@install -p -D -m 0755 targets /usr/bin

相当于

@mkdir -p /usr/bin

@cp targets /usr/bin

@chmod 755 /usr/bin/targets

@touch /usr/bin/tagets

install和cp的更多相关文章

  1. linux里install命令和cp命令的区别

    转:http://blog.yikuyiku.com/?p=2659 基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: ...

  2. 详解linux中install命令和cp命令的区别

    基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: .最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件, ...

  3. mkdir,rmdir,cp,rm,mv,cat,touch用法

    一.mkdir新建目录 1.进入tmp目录,查看该目录下面的子目录 [root@localhost ~]# cd /tmp[root@localhost tmp]# lshsperfdata_root ...

  4. Install cv2.so for Anaconda

    sudo apt-get install python-opencv cp /usr/lib/python2.7/dist-packages/cv2.so /opt/anaconda/lib/pyth ...

  5. FastDFS install - 2

    storage install nginx 1. update dependency package yum -y install pcre-devel openssl openssl-devel g ...

  6. FastDFS install

    Version: os: centos7 x64 FastDFS: 5.05 libfastcommon: latest 1. dwonload libfastcommon https://githu ...

  7. Ubuntu 14.04 install emacs 24.5

    1.前期准备工作 2.安装基础构件工具 3.下载emacs编译需要的依赖库 4.下载emacs24.5编译安装 5.下载并安装我的emacs配置文件 6.配置tmux和zsh 1. 前期准备工作 在阿 ...

  8. install - 复制文件并设置属性

    SYNOPSIS[总览] install [options] [-s] [--strip] source dest install [options] [-s] [--strip] source... ...

  9. Centos7 PXE Server Install Script

    #安装前配置好centos和epel yum源 #网卡ip和localip一致 localip="192.168.88.200" eth_name='eth0' dnsmasq_i ...

随机推荐

  1. PL/SQL编写的SQL语句插入SqlPlus时,报错 PLS-00302

    最近刚开始用PL/SQL,然后发现写SQL语句时,运行的时候,会对表中的字段报错. 好像是对字段的使用有问题 原来写的错误代码大概像这样 DECLARE xuehao XSB.id% TYPE; BE ...

  2. I2C硬件与模拟的区别

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C:一般也较为稳定,但是程序较为繁琐. 硬件(固件)I2C是直接调用内部寄存器进行 ...

  3. C++中的传值与传址

    在指针的传递中,也涉及到传值与传址的问题.下面通过一个函数进行说明. 代码如下: bool openBinary(uchar* buffer) { ; buffer = (uchar*)malloc( ...

  4. 设置了相对定位relative之后,改变top值,如何去掉多余空白?

    众所周知,relative和absolute有一个区别在于relative是相对自身定位,而absolute是相对于最近的定位父级定位,而此时的相对定位经过top值改变其在文档流中的位置之后,自身本来 ...

  5. 树型DP(2)

    声明 https://blog.csdn.net/no1_terminator/article/details/77824790 参考课件和讲授来自Accelerator 找树的直径 树的直径定义为一 ...

  6. Rest微服务案例(二)

    1. 创建父工程 Maven Project 新建父工程microservicecloud,packaging是pom模式,pom.xml内容如下: <!-- SpringBoot父依赖 --& ...

  7. Ubuntu16.04下安装Cmake-3.8.2并为其配置环境变量

    下载安装包 首先我们到官网下载最新的cmake二进制安装包https://cmake.org/files/ 这里,我下载的是比较新的cmake-3.8.2-Linux-x86_64.tar.gz解压安 ...

  8. array 数组

  9. [学习笔记] 舞蹈链(DLX)入门

    "在一个全集\(X\)中若干子集的集合为\(S\),精确覆盖(\(\boldsymbol{Exact~Cover}\))是指,\(S\)的子集\(S*\),满足\(X\)中的每一个元素在\( ...

  10. ILRuntime 学习

    ILRuntime: https://github.com/Ourpalm/ILRuntime Demo: https://github.com/Ourpalm/ILRuntimeU3D 中文在线文档 ...