つつみくんのLinux記

2024/05/22(水)01:30

Linuxシェルコマンド入門その4(ファイルやディレクトリのコピー)

Linuxシェルコマンド(5)

こんにちは(^^)/ 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」へ​​

続きを読む

総合記事ランキング

もっと見る