Linuxで「install」コマンドを使用してファイルをコピーする方法
公開: 2022-01-29 install
は、LinuxおよびmacOSでの用途の広いファイルコピーコマンドです。 効率を求めるパワーユーザーに最適です。 この記事を読んで、難しくはなく、よりスマートに作業する方法を見つけてください。
待ってください—ソフトウェアをインストールするためではありませんか?
install
コマンドには、Linuxコマンドの中で最も誤解を招くような名前が付いている可能性があります。 実際にはソフトウェアはインストールされません。 Ubuntuまたは別のDebianベースのディストリビューションのコマンドラインからソフトウェアパッケージをインストールしようとしている場合は、 apt-get
コマンドを使用します。 他のLinuxディストリビューションでは、代わりにLinuxディストリビューションのパッケージ管理ツールを使用してください。たとえば、Fedoraのdnf
やopenSUSEのzypper
などです。
では、インストールは何をしますか?
一言で言えば、 install
は、 cp
(コピー)、 chown
(所有者の変更)、 chmod
(モードの変更)、 mkdir
(ディレクトリの作成)、およびstrip
(シンボルの削除)コマンドの要素を組み合わせます。 これらすべての機能を1つのアクションで使用できます。
install
コマンドは次のことができます。
-
cp
コマンドのようにファイルをコピーします。 - 既存のファイルを上書きするかどうかを選択します。
-
mkdir
のように、ターゲットディレクトリが存在しない場合は作成します。 -
chmod
コマンドと同様に、ファイルのユーザー権限フラグを設定します。 -
chown
コマンドと同様に、ファイルの所有者を設定します。 -
strip
コマンドと同様に、実行可能ファイルから不要な手荷物を削除します。
そのすべての機能にもかかわらず、 install
コマンドには競合するオプションがあまりありません。
いつ使用しますか
install
コマンドはおそらく毎日使用されることはありません。 これは便利ですが、特定の状況でのみ使用できます。 install
が独自に行われるシナリオの1つは、ソフトウェア開発です。 新しいユーティリティをプログラミングしているとしましょう。 開発環境の外でテストを行う必要があります。 これを行うには、新しいプログラムファイルをテストディレクトリにコピーする必要があります。 テストディレクトリを作成する必要がある場合があり、ファイルの正しいアクセス許可と所有権を設定する必要があります。
開発は反復的なアクティビティであるため、この一連のアクションを何度も実行することになります。 install
コマンドは、すべての面倒な作業を自動的に実行します。 最後に、新しいユーティリティを展開する準備ができたら、 install
を使用して、正しい権限で最終的な作業場所にコピーできます。
例
プログラマーは、 ana
と呼ばれるまさにそのような新しいユーティリティに取り組んでいます。 実行可能バイナリファイルとデータベースで構成されています。 テスト後、Linuxシステムのすべてのユーザーが利用できるように、 /usr/local/bin
にコピーする必要があります。 install
を使用するときに、コンピューターで使用しているファイルとパスを、この例のファイル名とディレクトリパスに置き換える必要があります。
リリースの準備ができるまで、 ~/test/ana
というディレクトリでテストされます。 geek
グループのメンバーには、読み取りと実行の権限があります。 他のユーザーにも読み取りと実行のアクセス許可があります。 install
コマンドは、 chmod
と同じ数値表現をパーミッションに使用します。 私たちのプログラマーは、パーミッションを次のように設定する必要があると判断しました。
- 所有者:読み取り、書き込み、および実行。
- グループ:読み取りと実行。
- その他:実行のみ。
install
コマンドの使用方法
私たちの架空のプログラマーの作業ディレクトリは~/work
です。 彼はプログラムを作成し、コンパイルし、 ana
というバイナリを作成しました。 彼は、 ana
が使用するデータベースファイルWords.db
をすでに作成しています。 したがって、両方のファイルをテストする準備ができています。 それらを見てみましょう:
ls -l ana Words.db
彼が書いたana
ユーティリティは、コマンドラインで提供されたフレーズからアナグラムを作成します。 検証テストは非常に簡単です。
私たちのプログラマーは「ビスケット」というフレーズでana
を呼び出しましたが、すべて順調に見えます。 彼は今、これら2つのファイルを~/test/ana
ディレクトリにコピーして、新しいユーティリティが開発環境から離れて正しく機能するかどうかを確認したいと考えています。 彼は次のコマンドを発行します。
インストール-D-v ana Words.db -t〜 / test / ana
コマンドラインで使用されるオプションは次のとおりです。
- D :必要に応じて、親ディレクトリを含むディレクトリを作成します。
- v :詳細、作成された各ディレクトリーと実行された各ファイルのコピーをリストします。
- t :ターゲットディレクトリ。
install
によって~/test
ディレクトリが作成され、次に~/test/ana
ディレクトリが作成されることがわかります。 ファイルは、ターゲットディレクトリにコピーされるときに、1つずつ一覧表示されます。
~/test/ana
にファイルをリストすると、ファイルが正しくコピーされていることが確認できます。
ls -l
次のステップは、 ~/test/ana
ディレクトリでana
ユーティリティを呼び出してテストすることです。
ユーティリティは期待どおりに動作します。これはすばらしいことです。 ただし、権限が正しくありません。 要件は、グループgeek
のメンバーに読み取りと実行のアクセス許可を設定し、他のユーザーには実行のみを設定することです。
次のコマンドを使用すると、これらの問題の両方に非常に簡単に対処できます。 root権限でコマンドを実行するためにsudo
を使用していることに注意してください。 -o
と-g
およびオプションにはこれが必要です。 コマンドを発行するときにパスワードの入力を求められます。
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t〜 / test / ana
-
-b
(バックアップ)オプションは、ファイルが上書きされる前にファイルのバックアップを作成します。 -
-S
(サフィックス)オプションは、バックアップファイルのサフィックスを定義します。 接尾辞を指定しない場合は、~
(チルダ)が使用されます。install
で.bak
のサフィックスを使用するように求めています。 -
-o
(所有者)オプションを使用して、ファイルの所有者をdave
に設定します。 -
-g
(グループ)オプションには、グループの名前が必要です。 これがファイルの所有者グループになります。 これから使用するグループはgeek
と呼ばれます。 -
-m
(mode)オプションは、標準のchmod
数値構文を使用して、ファイルのファイルモードを設定します。
テストディレクトリがすでに存在することがわかっているため、 -D
(ディレクトリの作成)オプションを使用する必要はなくなりました。 -v
(verbose)オプションも省略しました。 ~/test/ana
ディレクトリにファイルをリストすると、ファイルの詳細が表示されます。
ls -l
これにより、すべての要件が満たされていることが確認されます。
- ファイルはテストディレクトリにコピーされました。
- 権限が正しく設定されています。
-
dave
はファイルの所有者です。 -
geek
グループは、2つのファイルの所有者グループです。 - ana.bakおよびWords.db.bakと呼ばれる各ファイルのバックアップコピーが作成されています。
これらはすべて、1つのコマンドを使用することで達成されました。 きちんとした。
私たちのプログラマーは、ユーティリティにいくつかの最終的な変更を加えて、再コンパイルします。 変更されたファイルは、 ~/work
ディレクトリから~/test/ana
ディレクトリにコピーする必要があります。 これは、 -C
(比較)オプションを使用して行うことができます。 ソースファイルとターゲットファイルが同じ場合、ソースファイルはコピーされません。
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t〜 / test / ana
ターゲットディレクトリ内のファイルを一覧表示すると、 ana
ファイルのファイルサイズが変更されていることがわかります。 ana.bak
ファイルよりも大きいです。 ana
のタイムスタンプも変更されました。 これらの変更は、ファイルの新しいバージョンがここにコピーされたためです。
ls -l
Words.db
ファイルのファイルサイズとタイムスタンプは変更されていません。 Words.db
ファイルは変更されていないため、コピーされませんでした。 多くのファイルがあるプロジェクトでは、 -C
(比較)オプションを使用すると、変更されたファイルをコピーするだけで、多くの時間とハードドライブのチャーンを節約できます。
プログラマーは、 ana
ユーティリティが引き続き動作することを再度テストしました。
install
を使用して、ファイルを/usr/local/bin
ディレクトリーにコピーします。 これにより、このLinuxコンピュータのすべてのユーザーが新しいユーティリティを利用できるようになります。 /usr/local/bin
が存在することがわかっているので、そのディレクトリを作成する必要はありません。 最後のコマンドの修正バージョンを使用できます。
ターゲットディレクトリを/usr/local/bin
に変更しました。 ターゲットディレクトリにこれらのファイルのコピーがまだないため、 -C
(比較)オプションを削除しました。したがって、比較するものはありません。 同様に、バックアップするものがないため、 -b
(バックアップ)オプションと-S
(サフィックス)オプションを削除できます。
sudo install -o dave -g geek -m 751 ana Words.db -t / usr / local / bin
ファイルが/usr/local/bin
に到着したことを一覧表示できます。
ls -l
最後のテストとして、ディレクトリをホームディレクトリに変更し、そこから新しいユーティリティを呼び出すことができるかどうかを確認しましょう。
ana
コマンドの前に./
を付ける必要がないことに注意してください。これは、 /usr/local/bin
から実行されていることを意味します。 任務完了。
インストールにより、バイナリファイル内から冗長なシンボルテーブルやその他の手荷物を取り除き、サイズを小さくすることができると述べました。 今それをしましょう。 以下のコマンドにはWords.dbが含まれていないことに注意してください。 これは、Words.dbがデータベースファイルであり、バイナリ実行可能ファイルではないためです。 バイナリファイルana
をコピーして縮小するには、次のコマンドを使用できます。 小文字の「s」を使用して-s(縮小)オプションを追加しました。 -b(バックアップ)オプションと-S(サフィックス)オプションに大文字の「S」を付けて追加し直しました。
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t / usr / local / bin
/usr/local/bin
にファイルをリストすると、 ana
ファイルのサイズをそのバックアップバージョンと比較できます。 ana
ファイルは以前のサイズのほぼ60%に縮小されました。
ls -l / usr / local / bin
要約すれば
install
コマンドは、かなりニッチな用途に対応します。 多くの人にとって、それは毎日、あるいは月ごとに使用されることはありません。 それにもかかわらず、 install
コマンドは、トリックの武器に精通し、持っているための優れたツールです。 あなたがそれを必要とするそれらの機会のために、それはあなたの学習曲線に効率の向上、単純さ、そして単に少ないキーストロークで報います。
Linuxコマンド | ||
ファイル | tar・pv・cat・tac・chmod・grep・diff・sed・ar・man・pushd・popd・fsck・testdisk・seq・fd・pandoc・cd・$ PATH・awk・join・jq・fold・uniq・journalctl・tail・stat・ls・fstab・echo・less・chgrp・chown・rev・look・strings・type・rename・zip・unzip・mount・umount・install・fdisk・mkfs・rm・rmdir・rsync・df・gpg・vi・nano・mkdir・du・ln・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ