基本上,在makefile裡會用到install,其他地方會用cp命令。
它們完成同樣的任務——拷貝檔案,它們之間的區別主要如下:
1、最重要的一點,如果目標檔案存在,cp會先清空檔案後往裡寫入新檔案,而install則會先刪除掉原先的檔案然後寫入新檔案。這是因為往正在使用的檔案中寫入內容可能會導致一些問題,比如說寫入正在執行的檔案可能會失敗,比如說往已經在持續寫入的檔案控制代碼中寫入新檔案會產生錯誤的檔案。而使用install先刪除後寫入(會生成新的檔案控制代碼)的方式去安裝就能避免這些問題了;
2、install命令會恰當地處理檔案許可權的問題。比如說,install -c會把目標檔案的許可權設定為rwxr-xr-x;
3、install命令可以列印出更多更合適的debug資訊,還會自動處理selinux上下文的問題。
------------------------------------分割線------------------------------------
當時在編譯lfs 6 的時候, 一直搞不懂 install 的命令 和 cp 以及和 chmod, chgrp 的區別?
工作之後才明白乙個running 的程序不能隨便進行 cp , 經常會提示 "text busy", 運維部的前輩們給的建議是採用mv 來替代 cp , 今天看起來前輩好像不知道install 這個命令啊.
現在就簡單介紹一下 install 命令.
install copy 檔案列表且同時能夠設定檔案的屬性(包括 owner, group) , 通常用在 makefiles 中 用來copy 程式到指定的目錄.
常見的用法有以下3中形式:
1: install -d [option] directory [directory...] 支援多個. 類似 mkdir -p 支援遞迴.
例如: install -d a/b/c e/f 結果和 mkdir -p a/b/c e/f 一樣.
2: install [option] source dest
複製 source 檔案(測試不能是目錄) 到dest file(檔案) .
install a/e c 結果類似 cp a/e c # 注意c必須是檔案.
有用選項 -d
install -d x a/b/c # 效果類似 mkdir -p a/b && cp x a/b/c
3: install [option] source [source...] directory
複製 多個source 檔案到目的目錄.
install a/* d 其中 d 是目錄.
有用選項
-b :自動備份.
-m : 設定安裝檔案的許可權
-p :保留檔案的timestamps. 也就是說檔案的timestaamps 和 source 檔案一樣. 當我們想要利用安裝檔案的mtime來跟蹤檔案的build時間而不是 安裝時間.
-s : strip the symbol tables from installed binary executables.
-s : 備份檔案的字尾.
install -s .bak new old #old 檔案自動被 mv 為 old.bak.
-v: verbose ,列印install 的檔案的詳細資訊.
`-c'
ignored; for compatibility with old unix versions of `install'. #用來相容舊版的unix.
-c: (大寫)
安裝檔案, 但是如果目標檔案和原始檔一樣( 判斷方法需要看看**確認) 就跳過, 這樣的好處是 能夠保持一樣檔案的mtime.
Linux中 install 和 cp 命令的區別
install命令與cp命令類似,均可以將檔案或目錄拷貝到指定的路徑 但是install命令可以控制目標檔案的屬性。install 常用於makefile檔案中,而 cp 在命令列等其他地方用到的比較多。backup control 為每個已存在的目的地檔案進行備份。b 類似 backup,但不接受...
install命令複製
install命令用於將目錄 檔案進行複製,修改檔案許可權,設定引數建立目錄。在test2目錄下建立遞迴建立dir1 dir2,使用cat命令編寫a.c檔案,複製a.c檔案到制定目錄位置。install dv m 0750 dir3制定 0750 許可權建立資料夾dir3 install命令和cp命...
linux下的install命令
介紹 install命令的作用是安裝或公升級軟體或備份資料,它的使用許可權是所有使用者。install命令和cp命令類似,都可以將檔案 目錄拷貝到指定的地點。但是,install允許你控制目標檔案的屬性。install通常用於程式的makefile,使用它來將程式拷貝到目標 安裝 目錄。語法 ins...