install命令

-- TOC --

向cp命令一样,只不过为install过程提供许多有用的参数,可以设置mode,group,owner等信息。

-d参数用来创建目录,作用于mkdir p一样:

$ install -d a/b/c 1/2/3
$ tree a
a
└── b
    └── c

2 directories, 0 files
$ tree 1
1
└── 2
    └── 3

2 directories, 0 files

用install命令copy文件,文件自动就拥有了可执行权限:

$ install _ins_jpegtran.sh a/b/c/kk
$ tree a
a
└── b
    └── c
        └── kk

2 directories, 1 file
$ ll a/b/c/kk
-rwxr-xr-x 1 xinlin xinlin 665 1月  21 13:56 a/b/c/kk*

-D参数可同时实现创建路径和copy文件:

$ install -D _ins_jpegtran.sh 1/2/3/kk
$ tree 1
1
└── 2
    └── 3
        └── kk

2 directories, 1 file
$ ll 1/2/3/kk
-rwxr-xr-x 1 xinlin xinlin 665 1月  21 14:00 1/2/3/kk*

可以用-m参数控制文件copy后的权限,这样就不用单独执行chmod命令。

$ install -D _ins_jpegtran.sh -m 644 1/2/3/kk

-s参数,自动进行strip动作。

-g:设置group

-o:设置owner

如果使用--verbose,就能够看到install命令都干了些什么:

$ install -D --verbose _ins_jpegtran.sh a/b/c/xx
install: creating directory 'a'
install: creating directory 'a/b'
install: creating directory 'a/b/c'
'_ins_jpegtran.sh' -> 'a/b/c/xx'
$ install -D --verbose _ins_jpegtran.sh a/b/c/xx
removed 'a/b/c/xx'
'_ins_jpegtran.sh' -> 'a/b/c/xx'

注意重复安装同一个文件的时候,install先删除再copy,这样的log信息可能会在其它场景下看到。

-t:指定target directory,source file就copy到这里面。

install命令的backup功能要说道一下,当脚本重新安装的时候,可以通过设置backup参数,保留上一次安装的相同的文件。

$ install -D -b _ins_jpegtran.sh a/b/kk
$ install -D -b _ins_jpegtran.sh a/b/kk  # second install
$ tree a
a
└── b
    ├── kk
    └── kk~

默认备份文件的后缀是~,可以用-S或者--suffix指定后缀。如果是更多次的install场景,想要保存每一次的备份文件,就要使用--backup参数:

$ echo '11' >> aa
$ cat aa
11
$ install -D --backup=t aa -m444 1/2/3/aa
$ echo '22' >> aa
$ install -D --backup=t aa -m444 1/2/3/aa
$ echo '33' >> aa
$ install -D --backup=t aa -m444 1/2/3/aa
$ tree 1
1
└── 2
    └── 3
        ├── aa
        ├── aa.~1~
        └── aa.~2~

2 directories, 3 files
$ cat 1/2/3/aa
11
22
33
$ cat 1/2/3/aa.~1~
11
$ cat 1/2/3/aa.~2~
11
22

上例使用--backup=t,备份的文件后缀中有个数字,数字越大,表示越近的备份!backup后可跟的控制参数,请参考man page。

本文链接:https://cs.pynote.net/sf/linux/shell/202201211/

-- EOF --

-- MORE --