コピー&ペーストは、パソコンで最もよく使う操作の一つです。Ctrl+CCtrl+V` のキーボードショートカットを使えば簡単にできますが、Linux ターミナルではそれほど簡単ではありません。この作業を行うにはいくつかの選択肢があります。以下は、Linux端末でテキスト、ファイル、ディレクトリをコピー&ペーストする方法です。

テキストのコピーと貼り付け

ターミナル上でテキストをコピーしたい場合、マウスでテキストをハイライトし、 Ctrl + Shift + C を押すとコピーされます。

カーソルのある場所にペーストするには、キーボードショートカットの Ctrl + Shift + V を使います。

貼り付けのショートカットは、Word文書(あるいは他のアプリケーション)からテキストの一部をコピーし、ターミナルに貼り付けたい場合にも適用されます。例えば、ブラウザで Web ページからコマンドをコピーし、 Ctrl + Shift + V ショートカットを使ってターミナルに貼り付けることができます。

もし何らかの理由でこれらのキーボードショートカットが機能しない場合は、端末が適切に設定されていない可能性があります。キーボードショートカットをカスタマイズできるオプションを探してみてください。以下は、最も一般的なターミナルに対する説明です。

  • Gnome Terminal - ハンバーガーメニューをクリックし、“Preferences “をクリックします。“Shortcuts “に移動し、“Edit “にスクロールします。コピー」と「貼り付け」のオプションが表示され、設定することができます。
  • コンソール** - “設定 “に移動し、 “キーボードショートカットを構成する “をクリックします。コピー “を検索し、前述のキーコンボを使用するように設定し、“貼り付け “も同じように設定します。

他のほとんどの端末では、コンソールでコピー/ペーストするためのデフォルトの普遍的な組み合わせにロックされ、それらを設定する機能はありません。

単一のファイルのコピーと貼り付け

Linux のコマンドラインでファイルやフォルダーをコピーする場合、上記のキーボードショートカットは使えません。cpはコピーの略語です。構文も簡単です。cp` の後にコピーしたいファイルと移動させたい場所を指定します。

cp your-file.txt ~/Documents/ (あなたのファイル.txtをコピーしてください。

これはもちろん、ファイルが作業しているのと同じディレクトリにあることを前提にしています。両方指定することもできます。

cp ~/Downloads/your-file.txt ~/Documents/ です。

また、コピーする際にファイル名を変更することもできます。コピー先に新しい名前を指定します。

cp ~/Downloads/your-file.txt ~/Documents/new-name.txt

フォルダとその内容をコピー&ペーストする

フォルダとその内容をコピーするためには、cpコマンドに再帰的にコピーするように指示する必要があります。これは -r フラグを使えば簡単です。

cp -r ~/Downloads/pictures-directory ~/Pictures/family-vacation-pics

残りの構文はすべて全く同じです。rフラグはcp` にディレクトリで作業していることを伝え、その内容をコピーするように指示します。

もし、既存のファイルを上書きして貼り付けたい場合は、 -f フラグを追加してください。

cp -rf ~/Downloads/pictures-directory ~/Pictures/family-vacation-pics

複数のファイルをコピー&ペーストする

複数のファイルをコピーすることもできます。Linuxのコマンドラインでは、{}という括弧を使って、複数の項目を一度にターゲットにすることができます。これを利用して、コピーする各ファイルの名前をカンマで区切って列挙することができます。

cp ~/Downloads/{file1.txt,file2.jpg,file3.odt} ~/Documents/

ファイルタイプが異なる3つのファイルは、すべてDocumentsディレクトリにコピーされます。

同じ種類のファイルをすべてコピー&ペーストする

同じ種類のファイルが大量にある場合、ワイルドカード文字 * を使ってコピーすることができます。アスタリスク/ワイルドカードはLinuxのコマンドラインに対して、その場所にあるものなら何でも絶対に受け入れるように指示します。つまり、Linuxに *.jpg をコピーするように指示すると、名前や.jpgの前にあるものに関係なく、すべてのJPGファイルをコピーします。

cp ~/Downloads/*.jpg ~/Pictures/

もし、複数のファイルタイプ、例えばJPGとPNGを使いたい場合は、先ほどの括弧を使用することができます。

cp ~/Downloads/*.{jpg,png} ~/Pictures/

コピーをよりインタラクティブにする

このガイドを読んでいて気づいたかもしれませんが、cpを使用すると、エラーが発生しない限り、処理を終えた後に確認やプロンプトのようなものは表示されません。これは、特に遅いハードウェアで非常に大きなファイルのコピー操作をしていて、完了するまでに長い時間がかかるような場合には、ちょっとした不快感の原因になるかもしれません。

コマンドに -v フラグを付けることで、 cp に対して、その処理に関する最も詳細な出力を行うように指示します。i` フラグは確認のプロンプトを表示し、特定のファイルの上書きなどの操作をキャンセルする機会を与えます。

cp -rvi ~/Downloads/*.jpg ~/Pictures/

一般に -v-i フラグは、Linux に共通する多くのコマンドで利用可能です。

Rsync vs CP

何らかの理由でファイルを上書きするようなコピー操作を何度も行う必要がある場合 (例えば、たまに更新するようなバックアップを作成する場合)、 rsync はあなたの顔をほころばせるかもしれません。

rsync` はもう少し高度で、それぞれのファイルの細部にまで入り込んで、両方のデータを完全に比較し、ファイル自体の中で、変更のあったデータのみを上書きします。これは、書き込みサイクルを節約し、ファイル全体を上書きすることによってドライブの状態を不必要に悪化させないため、保存先フォルダがSSDである場合に特に有効です。

Linux でファイルをコピーするために rsync を利用する方法については、こちらをご覧ください。

ファイルやフォルダの移動

もし、ある場所から別の場所へ、複製を作らずにファイルを移動したいのであれば、それも簡単にできますが、ファイルの移動には mv コマンドが必要です。構文は cp と非常によく似ています。

mv ~/Downloads/your-file.txt ~/Documents/

同様に、ファイル名を変更することもできます。

mv ~/Downloads/your-file.txt ~/Documents/renamed.txt

しかし、1つだけ大きな違いがあります。フォルダを丸ごと移動させるのに -r フラグは必要ありません。

mv ~/Downloads/downloaded-folder ~/Pictures/vacation-pics

よくある質問

rsync は cp よりも優れていますか?

一般的にはどちらが優れているということはありません。rsync` はコピー元とコピー先の両方のフォルダのファイルを完全に比較し、帯域幅や書き込みサイクルを節約するためにいくつかのコンピュータリソースを取ります。特定のフォルダのバックアップを常に更新している場合には最適ですが、コピー操作を1回行うだけであれば理想的とは言えません。

cpはスイスアーミーナイフのような機能で、ただ仕事をこなすだけです。もし、何かを上書きしなければならない場合、cp` がそれをやってくれます。対話的な機能があるため、初心者にも優しく、コピー作業をもう少しコントロールすることができます。

なぜ Ctrl+C でターミナルからコピーできないのですか?

Linuxのターミナルアプリケーションでは、キーボードの Ctrl + C を押すと、カーネルに SIGINT (割り込み) シグナルが送信されます。これはLinuxにその端末で動作しているものを停止するように伝える簡単な方法です。

このキーの組み合わせに反応するように端末の “コピー” 機能を設定すると、実行中のコマンドがまだ何かを行っている最中にそのコマンドからテキスト行をコピーする際に問題に遭遇することになります。

画像引用元:Neron Photos on Pexels

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。