技術ノート Linux Linux で「install」コマンドを使用してファイルをコピーする方法

Linux で「install」コマンドを使用してファイルをコピーする方法

を使用してファイルをコピーする方法

install 、Linux および macOS で使用できる多用途のファイル コピー コマンドです。効率を求めるパワーユーザーに最適です。この記事を読んで、難しいことではなく、より賢く働く方法を見つけてください。

待ってください — ソフトウェアをインストールするためのものではありませんか?

install コマンドは、Linux コマンドの中で最も誤解を招きやすい名前を持っている可能性があります。実際にはソフトウェアはインストールされません。 Ubuntu または別の Debian ベースのディストリビューションでコマンド ラインからソフトウェア パッケージをインストールしようとしている場合は、

 apt- get

指示。他の Linux ディストリビューションでは、代わりに Linux ディストリビューションのパッケージ管理ツールを使用してください。たとえば、次のようになります。

 dnf

Fedora または

zypper

openSUSE 上で。

を使用してファイルをコピーする方法

では、インストールは何をするのでしょうか?

一言で言えば、 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 (冗長) オプションも省略しました。 ~/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 · · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

関連: 開発者と愛好家のための最高の Linux ラップトップ

「Linux で「install」コマンドを使用してファイルをコピーする方法」に関するベスト動画選定!

Linux(Ubuntu)とWindowsでファイル共有「初心者、入門」
scpコマンドとFTPサーバによるファイル転送方法