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