2024/05/22(水)01:30
Linuxシェルコマンド入門その4(ファイルやディレクトリのコピー)
こんにちは(^^)/
Windowsやスマホではコマンドではなく、GUI(グラフィカル ユーザー インターフェース:アイコンなどを使ってコマンドを打ち込まずにユーザーが操作できる方法)を使ってファイルの操作をしますね。
そして、GUIでファイルやフォルダをコピーするには、一旦コピーしてからペースト(貼り付け)するというのが一般的です。(ドラックアンドドロップもありますが・・・)
ところがシェルのコマンドでは、ドロップの必要はなく、コピーコマンドを使うとファイルのコピーが作成できてしまいます。(^^)
さて、このファイルやディレクトリをコピーするコマンドは何でしょうか?
ヒントはコピーの英語をアルファベット2文字で表します。
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
答えは
cp
です!(^^)
わずか4文字の「copy」という単語を2文字に短縮してしまうというのは、本気で打ち込む文字数を減らしにかかっていますね。(^^;)
「cp」だけでなく今まで出てきたコマンドも、軒並み2文字で表現されているのは、単純にキーボードを打つ回数を減らすという意味だけでなく、昔は今ほど通信スピードが早くなかったので、なるべく通信で送る文字数を減らしたいということで、よく使うコマンドは少ない文字数で表現されていました。
(さすがに、インターネットなどの通信で使うことを前提に作られたシェルですね(^^))
さて、cpの基本的な使い方ですが、
cp 「コピーしたいファイルやフォルダ名」 「コピー先」
になります。
例えば、「test.txt」というテキストファイルを「Documents」というディレクトリの中に移動するコマンドは、
cp test.txt Documents/
になります。
ところがこのcpコマンド、コピー先はディレクトリでなくても構いません。
例えば、「test.txt」と全く同じ内容の「test2.txt」を作りたい場合は、
cp test.txt test2.txt
とすると、ファイルのコピーが作成できてしまいます。
ですから、「test.txt」を「Test」というディレクトリにコピーしようと思って、「Test」ディレクトリがない場合でも、
cp test.txt Test
としてしまうと、「test.txt」というテキストファイルと同じ内容の「Test」というテキストファイルが作られてしまいます。(^^;)
Linuxのコマンド上では「.txt」のような拡張子は見やすいように付けているだけなので、拡張子の無い「Test」というテキストファイルも普通に作れてしまいます。
この場合、ディレクトリ内にコピーしたいという意志を明確にしたい場合は、
cp test.txt Test/
という風に、ディレクトリ名の最後に「/」を付けましょう。そうすると、もし「Test」というディレクトリが存在しないときは、
というように、通常ファイルをディレクトリとしてコピーできないというエラーが出てくれます。(^^)
ちなみに、コピーするときの注意点としては、オプションを付けないと所有者やパーミッションは、実行しているユーザーの新しいパーミッションが付けられてしまいます。
その上、新しくコピーされたファイルやディレクトリのタイムスタンプもコピーされたときの日時になってしまいますね。
そんなときは、「cp -p test.txt Documents/」というふうに「-p」オプションを付けると、元のファイルと同じパーミッションで同じ所有者(rootの場合だけ)で同じタイムスタンプとしてコピーされます。
それから、ファイルだけでなくディレクトリも同じようにコピー出来ますね。
試しに「mkdir Test」で「Test」というディレクトリを作って、それをコピーしてみます。(mkdirはディレクトリを作るコマンドです。(^^))
「cp Test/ Documents/」とすると、「Test」ディレクトリが「Documents」ディレクトリの中にコピーされそうな気がしますが、
ディレクトリをコピーするときは「-r」オプションを付けないと駄目みたいです。(^^;)
「-r」オプションは、「--recursive」(再帰的)オプションの略で、ディレクトリの中にあるファイルやディレクトリを全てコピーするという意味になります。
先程、「test.txt」を「Documents」ディレクトリの中にコピーしましたので、「-r」を付けて「Documents」フォルダをコピーすると、その中の「test.txt」もコピーされましたね。(^^)
このように、ファイルやディレクトリをコピーするには「cp」コマンドを使ってください。「ペースト」は必要ありませんよ。(^^)♪
それでは、また次回お会いしましょう(^^)/
「Linuxシェルコマンド入門その1(ファイルやディレクトリの一覧)」へ 「Linuxシェルコマンド入門その3(管理者権限でシェル操作?)」へ
「Linuxシェルコマンド入門その5(アクセス権限とは?)」へ 「つつみくんのLinux記その1」へ