install コマンド

ファイルをコピーして属性を設定します。

概要

install コマンドは、ファイルを指定した宛先にコピーしながら、権限、所有権、タイムスタンプを設定します。ソフトウェアのインストール中にファイルを適切な場所に配置するために、スクリプトやMakefileでよく使用されます。cpchmodchownmkdir の機能を1つのコマンドに統合しています。

オプション

-d, --directory

ファイルをコピーする代わりにディレクトリを作成します。

$ install -d /tmp/new_directory
$ ls -ld /tmp/new_directory
drwxr-xr-x 2 user user 4096 May 5 10:00 /tmp/new_directory

-m, --mode=MODE

デフォルトの rwxr-xr-x ではなく、指定した権限モード(chmod と同様)を設定します。

$ install -m 644 source.txt /tmp/
$ ls -l /tmp/source.txt
-rw-r--r-- 1 user user 123 May 5 10:01 /tmp/source.txt

-o, --owner=OWNER

所有者を設定します(スーパーユーザーのみ)。

$ sudo install -o root source.txt /tmp/
$ ls -l /tmp/source.txt
-rwxr-xr-x 1 root user 123 May 5 10:02 /tmp/source.txt

-g, --group=GROUP

グループ所有権を設定します(スーパーユーザーのみ)。

$ sudo install -g wheel source.txt /tmp/
$ ls -l /tmp/source.txt
-rwxr-xr-x 1 user wheel 123 May 5 10:03 /tmp/source.txt

-s, --strip

実行ファイルからシンボルテーブルを削除します。

$ install -s executable /tmp/

-v, --verbose

作成される各ディレクトリの名前を表示します。

$ install -v source.txt /tmp/
'source.txt' -> '/tmp/source.txt'

-b, --backup[=CONTROL]

既存の宛先ファイルごとにバックアップを作成します。

$ install -b source.txt /tmp/
$ ls -l /tmp/
-rwxr-xr-x 1 user user 123 May 5 10:04 source.txt
-rwxr-xr-x 1 user user 123 May 5 10:03 source.txt~

-c, --compare

ソースファイルと宛先ファイルが同じ場合はコピーしません。

$ install -c source.txt /tmp/

使用例

特定の権限でファイルをインストールする

$ install -m 755 myscript.sh /usr/local/bin/

複数のディレクトリを一度に作成する

$ install -d /tmp/dir1 /tmp/dir2 /tmp/dir3

特定の所有者とグループでファイルをインストールする

$ sudo install -o www-data -g www-data -m 644 config.php /var/www/html/

複数のファイルをディレクトリにインストールする

$ install -m 644 *.txt /tmp/

ヒント:

デプロイメントスクリプトでの使用

install コマンドは、権限と所有権を一度に処理するため、デプロイメントスクリプトに最適です。個別の cpchmod コマンドを使用するよりも効率的です。

親ディレクトリの作成

mkdir -p とは異なり、install -d は親ディレクトリを作成しません。ネストされたディレクトリ構造を作成する必要がある場合は、最初に親ディレクトリを作成するか、代わりに mkdir -p を使用してください。

ファイル属性の保存

元のファイルの属性を保持したい場合は、install -p を使用します。これにより、ソースファイルの変更時間、アクセス時間、モードが保持されます。

バックアップ戦略

バックアップに -b を使用する場合、--suffix=SUFFIX でバックアップの接尾辞を制御したり、--backup=CONTROL でバックアップ方法を設定したりできます(CONTROL は 'none'、'numbered'、'existing'、または 'simple' のいずれか)。

よくある質問

Q1. installcp の違いは何ですか?

A. install はコピーと権限・所有権の設定を1つのコマンドで組み合わせますが、cp はファイルのコピーのみを行います。install はソフトウェアのインストール用に設計されていますが、cp は汎用的なコピーコマンドです。

Q2. installmkdir のようにディレクトリを作成できますか?

A. はい、-d オプションを使用すると、install は特定の権限を持つディレクトリを一度に作成できます。

Q3. install はファイルのタイムスタンプを保持しますか?

A. デフォルトでは、install はタイムスタンプを現在の時刻に更新します。元のタイムスタンプを保持するには、-p オプションを使用してください。

Q4. install を使用してディレクトリを再帰的にコピーできますか?

A. いいえ、install には cp -r のような再帰的オプションはありません。最初にディレクトリ構造を作成し、その後ファイルをインストールする必要があります。

参考文献

https://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html

改訂履歴