install和cp

在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

posted @   thomas_blog  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示