用法:install [選項]... [-T] 源文件 目標文件
或:install [選項]... 源文件... 目錄
或:install [選項]... -t 目錄 源文件...
或:install [選項]... -d 目錄...
此install 將文件(通常僅是編譯后的文件)復制到您所選擇的目的位置。
如果您希望在GNU/Linux 操作系統(tǒng)上下載并安裝一個即時可用的軟件包,
您應當使用諸如yum(1) 和apt-get(1) 的軟件包管理器。
在前三種形式中,將源文件復制到目標文件或將多個源文件復制到一個已存在的目錄
中同時設置其所有權和權限模式。在第四種形式中,創(chuàng)建給出目標目錄中的所有組件。
長選項必須使用的參數(shù)對于短選項時也是必需使用的。
--backup[=CONTROL] 為每個已存在的文件創(chuàng)建備份
-b 類似--backup 但不接受參數(shù)
-c (忽略)
-C, --compare 比較每組源文件和目標文件,在一些情況下不修改目標文件
-d, --directory 將所有參數(shù)視為目錄名稱;為指定的目錄創(chuàng)建所有組件
-D 創(chuàng)建目標目錄的所有必要的父目錄,然后將源文件復制至該目錄
-g, --group=組 自行設置所屬組,而不是進程目前的所屬組
-m, --mode=模式 自行設置權限模式(像chmod),而不是rwxr-xr-x
-o, --owner=所有者 自行設置所有者(只適用于超級用戶)
-p, --preserve-timestamps 修改源文件的訪問/修改時間以與目標文件保持一致
-s, --strip 拆解符號表
--strip-program=程序 指定拆解二進制文件的程序
-S, --suffix=后綴 覆蓋常用備份文件后綴
-t, --target-directory=目錄 將源文件所有參數(shù)復制到指定目錄
-T, --no-target-directory 將目標文件視為普通文件
-v, --verbose 創(chuàng)建目錄時顯示其名稱
--preserve-context 保持SELinux 的安全環(huán)境
-Z, --context=CONTEXT 設置文件和目錄的SELinux 安全環(huán)境
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
備份文件的后綴為"~",除非以--suffix 選項或是SIMPLE_BACKUP_SUFFIX
環(huán)境變量指定。版本控制的方式可通過--backup 選項或VERSION_CONTROL 環(huán)境
變量來選擇。以下是可用的變量值:
none, off 不進行備份(即使使用了--backup 選項)
numbered, t 備份文件加上數(shù)字進行排序
existing, nil 若有數(shù)字的備份文件已經(jīng)存在則使用數(shù)字,否則使用普通方式備份
simple, never 永遠使用普通方式備份
例:
[root@linux ~]# install test.php ar_test #將test.php拷貝到ar_test下面
[root@linux ~]# install -d hao #創(chuàng)建目錄
[root@linux ~]# install -t hao utf8 test.php #將utf8 test.php cp到hao目錄下面
linux中install命令和cp命令的區(qū)別
基本上,在Makefile里會用到install,其他地方會用cp命令。
它們完成同樣的任務——拷貝文件,它們之間的區(qū)別主要如下:
1、最重要的一點,如果目標文件存在,cp會先清空文件后往里寫入新文件,而install則會先刪除掉原先的文件然后寫入新文件。這是因為往正在 使用的文件中寫入內(nèi)容可能會導致一些問題,比如說寫入正在執(zhí)行的文件可能會失敗,比如說往已經(jīng)在持續(xù)寫入的文件句柄中寫入新文件會產(chǎn)生錯誤的文件。而使用 install先刪除后寫入(會生成新的文件句柄)的方式去安裝就能避免這些問題了;
2、install命令會恰當?shù)靥幚砦募嘞薜膯栴}。比如說,install -c會把目標文件的權限設置為rwxr-xr-x;
3、install命令可以打印出更多更合適的debug信息,還會自動處理SElinux上下文的問題。
install - copy files and set attributes
install 在做拷貝的同時,設置attributes.
因此Makefile 中盡量使用install 命令。
例如
@install -d a>/usr/bin/a> -p -D -m 0755 targets /usr/bin
相當于
@mkdir -p /usr/bin targets /usr/bin 755 /usr/bin/targets /usr/bin/tagets
更新文件時間戳
install 命令好強大啊。
另外@前綴的意思是不在控制臺輸出結果。