coreutils の install(1)はファイルコピー時のownerやmodeを設定できるだけでなく、ディレクトリの作成も一度に行ってくれます。
hoge.conf
を /etc/bar/
へ 0600 として配置する時には mkdir/cp/chmod と3つ行うことになりますが、install コマンドなら一発です。
カレントディレクトリの hoge.conf
を /etc/bar/
ディレクトリへ 0600 としてコピーする時にはこのようになります。この時 /etc/bar/
が無ければさくせいしてく
$ sudo install -m 0600 -D -t /etc/bar/ hoge.conf
chown/chgrp相当も -o
や -g
で指定できます。詳しくは install(1) をご覧ください。
注意点
ファイルのmodeやowner/groupは指定できますが、作成されるディレクトリは 0755 で固定です。(https://linuxjm.osdn.jp/info/GNU_coreutils/coreutils-ja_80.html)
比較内容
mkdir/cp/chmodを使った場合
$ ls hoge.conf
hoge.conf
$ sudo mkdir -p /etc/bar/
$ sudo cp hoge.conf /etc/bar/
$ sudo chmod 600 /etc/bar/hoge.conf
$ ls -laF /etc/bar/
total 12
drwxr-xr-x 2 root root 4096 Aug 12 09:45 ./
drwxr-xr-x 118 root root 4096 Aug 12 09:45 ../
-rw------- 1 root root 484 Aug 12 09:45 hoge.conf
installを使った場合
$ ls hoge.conf
hoge.conf
$ sudo install -m 0600 -D -t /etc/bar/ hoge.conf
$ ls -laF /etc/bar/
total 12
drwxr-xr-x 2 root root 4096 Aug 12 09:45 ./
drwxr-xr-x 118 root root 4096 Aug 12 09:45 ../
-rw------- 1 root root 484 Aug 12 09:45 hoge.conf
EoT