ディレクトリをコピー
引き続きcp を勉強していきます。
Lesson 6 までずっとコマンドを素のままで使ってきましたが、これからはいよいよオプションの使いかたも含めて解説していきます。
加えて、今までは空っぽのファイルやディレクトリを相手に、コマンドの使いかたを試してきましたが、ここからは中身のあるファイルを相手にしていきます。
いろいろと覚えることが増えて「大変だなぁ」って思うかも知れませんが、安心してください。
ゼンゼン大丈夫です。
これを言うと元も子もないように思うけれど、コマンドもその使いかたも、ど忘れしたってゼンゼンOKです(笑)。
忘れてしまったらまず今使っているlinux に聞いてみることです。lesson 5で少し触れた manコマンドを引いてみてください。
それにインターネット上には、linux の使いかたを親切に教えてくれる日本語のページもたくさん存在します。
真っ黒なターミナルを前に右も左も分からなかった頃から比べて、少しは質問力も付いてきているハズです。
どんなキーワードを検索にかければいいか?。少しずつわかってきたのでは?ありませんか?
ジャンジャンgoogle で検索してみましょう!
さて、cp の続きです。前回、ファイルのコピーまでお話しましたが、ディレクトリのコピーは素のままのcp ではできない。ってところで終わっていました。
ディレクトリをコピーするには、以下のようにオプションを付けて命令します。
cp でディレクトリをコピー
cp -r directory_01/ test02/
オプションとは
cp コマンドのすぐ後ろにある -r がオプションです。
Lesson 5 で少し触れたman コマンドの説明あたりから、オプション(option)っていうモノの存在をチラチラさせてきましたが、いよいよここから本格的にoptionを使っていくことにします。
option は直訳すると「選択」という意味です。
コマンドにはユーザーが選択することで利用可能になる追加機能が付随しているのです。
その選択した機能を引数としてコマンドに渡すのですが、その際、他の引数と区別するために-r のようにハイフンを頭に付けてやります。
オプションはたいていアルファベット一文字(この場合はr)とハイフンの組み合わせで指定します。
ちなみにLesson 5 でコマンドの名前と由来について話しましたが、オプションにもその機能を想起できるようなアルファベットのイニシャルを用いています。
-r はrecursive(再帰的に)の頭文字です。
再帰的って単語が非常にわかりにくいのですが(笑)。簡単に言うと繰り返して処理をする。っていうコトです。
ディレクトリのコピーでどうして?再帰的に処理するオプションが必要なの?って思いませんか?
ここでまた思い出してほしいのが、階層構造です。
ディレクトリは普通のファイルと違って、中になにか入っているかもしれませんよね?
もしかしたらモノスゴイ階層が含まれてるかもしれません。
linux は「コピーしろって引数を渡されたけど、コレってディレクトリじゃない? ホントにコピーしていいの?」って考えます。
試しに、オプション無しで命令してみてください。
すると・・・・。

こんなふうにメッセージを出して処理を中止しますので、命令するこちらは「これはディレクトリのコピーなんだ」と明示的に示す必要があるのです。オプションを使って。
ディレクトリをコピーしてみる
それではさっそくオプションを使って、ディレクトリをコピーしてみましょう。
作業ディレクトリで directory_01/ をtest02/ へ名前を変えてコピーします。
名前を変更してディレクトリをコピー
cp -r directory_01/ test01/test02/directory_02

コマンドの入力は大丈夫ですか?
前回レッスンでは名前を変更せずにコピーしましたが、今回は名前を変えてみました。
名前の変更で新しいディレクトリ名を入力する以外は、tab キーを使って補完機能でいけますよ。
さて、今回はcp -r というコマンドのオプションの使いかたを学びました。
cp には -r の他にもいくつか存在します。興味があればman をみてみましょう。
そしてオプションはcp 以外のコマンドにももちろん用意されています。
次回は、ちょっとレッスンを遡って、オプションを使った練習をしてみましょう。
今まで説明を保留していた事柄にも触れていきます。