cpコマンドでファイルをコピー
lesson 1 ~ 5 に登場したコマンドを駆使して、今私たちはディレクトリの間を行ったり来たりする練習をしています。
移動先のディレクトリも自分で作ったり、移動させたりして、階層構造(ツリー構造)がどういうものかもだんだんわかってきたのでは? ないでしょうか。
これまでに登場したコマンドについては、ここにまとめてありますので、覗いてみてください。
これからドンドン登場人物(コマンド)も、増えていきます。
さて、前回はmv でファイルを移動させました。今回はファイルをコピーしてみます。
新しい登場人物はcp です。
前回のレッスンで、ディレクトリもファイルの一種。っていう話をしました。
っていうわりには、これまで練習用に作ってきた階層構造にはディレクトリしかありません。
しかも中身は空っぽです。
それじゃさみしいからってわけじゃないけれど(笑)
今回、勉強するcp コマンドにとりかかる前に、ファイル(普通のファイル)を作ってみましょう。
使うコマンドは、touch です。
今、練習用の作業ディレクトリはこんな状態になっているハズです。
それではさっそく”普通”のファイルを作ってみましょう。touch を使って。
作ったら、ls で確認してみます。
touch で空のファイルを作成
touch file_001.txt
ls
さて、カレントディレクトリにfile_001.txt という名前の”普通”のファイルができました。
ところでさっきから”普通”、”普通”ってウルサクないですか?(笑)
ファイルの一種であるディレクトリに対して、「普通の」と前置きしているわけですが、英語ではレギュラーファイル(regular files)なんて言われていたりします。
”普通の”っていうよりなんとなくカッコイイ響きですけど。書き分けるのは面倒なので、以降はフツーにファイルとだけ表記していきます。
ファイルがホントにできたかどうか、ls や tree でチェックしたのが次の写真です。

cat でファイルを覗いてみる
せっかくですから作ったファイルを一応 cat で見てみましょう。
cat でfile_001.txtを見てみる
cat file_001.txt
ターミナルにはなにも表示されず、プロンプトに戻ったと思います。
touch は空のファイルを作るので、cat は何もせずにプロンプトに戻ったというわけです。
空のファイルを作るのに、何でtouch(タッチ)なの?って思ったかもしれません。
もしそう思ったなら、man でtouch を調べてみてください。
touch はファイルに書かれている内容は弄らずに、タイムスタンプというものを変更するコマンドってことが、わかると思います。
じゃ、タイムスタンプって何だろう?って思うでしょう・・・・。
その説明は・・・・、今回も先送りにしますが(笑)
空のファイルを作るだけのコマンドなんて意味あるの?などなど、ちょっと疑問に思ったら、ぜひ、man を引いてみてください。
ファイルをコピーする!
さてさて、ようやく本題に入ります。
touch で作ったファイル(file_001.txt)をコピーしてみましょう。
使うコマンドは cp です。
まずはカレントディレクトリでやってみます。コピーですから、ファイル名を変更する必要がありますよね?。
でも、ちょっとここではわざと間違えて、同じ名前でコピーしろとcp で命令を下してみます。
すると・・・・。

ということですので、次はちゃんとファイル名を変えてコピーしてみます。
カレントディレクトリでファイルをコピー
cp file_001.txt file_002.txt
ちゃんとコピーできましたか?
いつものように ls や tree で確認してみましょう。

他のディレクトリをターゲットにコピー
次は違うディレクトリにコピーしてみましょう。
階層構造を意識して操作します。コピー元は前回と同じfile_001.txt で、ターゲットは test01/dir_02/dir_04/ ディレクトリにしましょう。
離れたディレクトリにコピー
cp file_001.txt test01/dir_02/dir_04/
できましたか??
カレントディレクトリではないので、ファイル名がそのままでもコピーできます。
名前が同じでいいなら、上の例のようにコピー先のディレクトリ名を指定するだけでコピー可能です。
もちろん、ファイル名を変えてもOKです。
写真は上に示したコマンドの実行結果です。いつものようにls と tree で確認してみました。

さて、コピーの操作はしたものの、touch で作ったファイルですから、いまのところ中身は空っぽです。
空っぽのファイルをコピーしても、イマイチ実感わきませんよね?
それと、今回はいわゆるレギュラーファイルを対象にして、コピーの練習をしたのですが、ディレクトリに対しては、まだ何も触れていません。
実を言うと素のままのcp コマンドでは、ディレクトリをコピーすることはできないのです。
ディレクトリをコピーするには、lesson 5 で触れた、オプションというコマンドの付加機能の指定が必要になります。
次回、lesson 7 では引き続きcp コマンドについて解説していきます。