簡介 從命令的名字上來看,會讓人誤以為這是一個和安裝相關的命令。 其實不然,install命令用於複製文件(cp)或創建空目錄(mkdir)並設置相關的屬性(chown、chmod)。 這裡的屬性包含了ownership、許可權以及時間戳(保留時間戳,而不是修改)。 語法格式 單源複製。一般省略掉-T ...
簡介
從命令的名字上來看,會讓人誤以為這是一個和安裝相關的命令。
其實不然,install命令用於複製文件(cp)或創建空目錄(mkdir)並設置相關的屬性(chown、chmod)。
這裡的屬性包含了ownership、許可權以及時間戳(保留時間戳,而不是修改)。
語法格式
單源複製。一般省略掉-T選項。
install [OPTION]... [-T] SOURCE DEST
多源複製。一般只使用第一種。
install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE...
創建空目錄。
install [OPTION]... -d DIRECTORY...
常用選項
- -o, --owner=OWNER:設置屬主。
- -g, --group=GROUP:設置屬組。
- -m, --mode=MODE:設置許可權。
- -p, --preserve-timestamps:保留時間戳。
- --backup[=CONTROL]:如果目標文件存在的話,複製前對其進行備份。
- -b:類似--backup,但是不會接收任何參數。
- -S, --suffix=SUFFIX:在備份時候選擇對應的尾碼。
選項中關於備份的,見用法示例。
用法示例
複製文件並設置ownership和許可權,留意源和目標文件不同的時間戳。
[root@C7 ~]# install -o zwl -g zwl -m 777 test.txt inst.txt [root@C7 ~]# ls -l test.txt inst.txt -rwxrwxrwx 1 zwl zwl 13 Dec 12 10:44 inst.txt -rw-r--r-- 1 root root 13 Nov 14 14:49 test.txt
同上,但是保留時間戳。同時留意,目標文件已存在,可直接覆蓋,不會有互動式提示。
[root@C7 ~]# install -o zwl -g zwl -m 777 -p test.txt inst.txt [root@C7 ~]# ls -l test.txt inst.txt -rwxrwxrwx 1 zwl zwl 13 Nov 14 14:49 inst.txt -rw-r--r-- 1 root root 13 Nov 14 14:49 test.txt
關於備份的話,由於這個命令用得少,因此也沒有深究。
上面說了,預設情況下,目標文件如果已存在,是可以直接覆蓋的。想要備份的話,可以使用-b或者--backup。
-b所創建的備份文件的文件名為“FILE~”。反覆運行的話,備份文件會被反覆覆蓋。
# install -b test.txt inst.txt
...
-rwxrwxrwx 1 zwl zwl 13 Dec 12 10:59 inst.txt -rwxrwxrwx 1 zwl zwl 13 Dec 12 10:58 inst.txt~
“FILE~”中的波浪號~為尾碼名,可修改。
# install -S .bak -b test.txt inst.txt ... -rwxr-xr-x 1 root root 13 Dec 12 11:13 inst.txt -rwxr-xr-x 1 root root 13 Dec 12 11:11 inst.txt~ -rwxr-xr-x 1 root root 13 Dec 12 11:13 inst.txt.bak
--backup如果不帶選項參數的話,是和-b效果一樣的。如果帶參數的,有一種參數叫做numbered,可簡寫為t,表示反覆備份不會刪除備份文件,而會生成數字遞增式備份。
如果此前已經有使用過數字遞增式備份的話,那麼後續的-b和不帶參數的--backup,會延續此前的數字遞增式備份繼續下去。
[root@C7 ~]# install --backup=numbered test.txt inst.txt [root@C7 ~]# install --backup=numbered test.txt inst.txt [root@C7 ~]# install --backup=t test.txt inst.txt [root@C7 ~]# install --backup=t test.txt inst.txt [root@C7 ~]# ls -l test.txt inst.txt* -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt -rwxr-xr-x 1 root root 13 Dec 12 11:28 inst.txt.~1~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~2~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~3~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~4~ -rw-r--r-- 1 root root 13 Nov 14 14:49 test.txt [root@C7 ~]# install -b test.txt inst.txt [root@C7 ~]# install --backup test.txt inst.txt [root@C7 ~]# ls -l test.txt inst.txt* -rwxr-xr-x 1 root root 13 Dec 12 11:32 inst.txt -rwxr-xr-x 1 root root 13 Dec 12 11:28 inst.txt.~1~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~2~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~3~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~4~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~5~ -rwxr-xr-x 1 root root 13 Dec 12 11:31 inst.txt.~6~ -rw-r--r-- 1 root root 13 Nov 14 14:49 test.txt
最後簡單演示一下目錄相關。
[root@C7 ~]# install -o zwl -g zwl -m 777 -p -d instdir{1,2,3} [root@C7 ~]# ls -ld instdir{1,2,3} drwxrwxrwx 2 zwl zwl 6 Dec 12 11:41 instdir1 drwxrwxrwx 2 zwl zwl 6 Dec 12 11:41 instdir2 drwxrwxrwx 2 zwl zwl 6 Dec 12 11:41 instdir3