install(1)コマンドが便利だった件
はじめに
install(1)
という、cp
とmkdir
とchmod
を同時に行うような便利コマンドがあることを知りました。
(忘れちゃいましたが、何かのMakefileを見ているときに存在に気付きました)
これを使うと、プロビジョニングなどのスクリプトが簡潔に書けるようになりそうです。
……というわけで使い方のメモがてらまとめてみます。
manの内容まとめ
install
はBSD版とGNU版があるようですが、ここではGNU版について書きます。
BSD版ではいくつかのオプションが使用できません。(-D
はなかったと思う)
ちなみにmacの場合は標準でBSD版のinstall
が入っており、Coreutilsを入れるとGNU版のinstall
が使えるようになります。
4種類の使い方
install [OPTION]... [-T] SOURCE DEST
SOURCE
をDEST
にコピーする。-T
を付けると、DEST
をファイルとして扱う
install [OPTION]... SOURCE... DIRECTORY
- 複数の
SOURCE
ファイルをDIRECTORY
ディレクトリへコピーする
- 複数の
install [OPTION]... -t DIRECTORY SOURCE...
- 複数の
SOURCE
ファイルをDIRECTORY
ディレクトリへコピーする
- 複数の
install [OPTION]... -d DIRECTORY...
- ディレクトリを作成する(複数可)
その他のオプション(良さげなのを抜粋)
-D
- コピー先のディレクトリが存在しない場合、ディレクトリを作成する
mkdir -p
みたいな感じ
-o 所有者
- コピー先の所有者を変更する
chown
みたいな感じ
-g グループ
- コピー先の所有グループを変更する
chown
みたいな感じ
-m パーミッション
- コピー先のパーミッションを変更する
chmod
みたいな感じ
-S SUFFIX
- コピー先が上書きになる場合、ファイル名の最後に
SUFFIX
を付けてバックアップする
- コピー先が上書きになる場合、ファイル名の最後に
-Z
- コピー先のSELinuxセキュリティコンテキストを設定する
- (※マニアックかよ)
使用例
authorized_keysのセットアップ
今までこう書いていたものが…
|
|
こう書けます。
|
|
すっきりしましたね!
まとめ
なぜ今までこんな便利なものに今まで気付かなかったのか……