mvコマンドでファイルを移動
前回は、練習用のディレクトリをmkdir で作り、cd でディレクトリ間を移動してみました。
今回は、自分は動かずにファイルやディレクトリのほうを移動させます。
使うコマンドは、mv です。
mv はmove の略です。覚えやすいですよね?
ちなみにこれまでのLessonに登場してきたコマンドも、だいたいそんな感じで命名されています。みなさんもなんとなくウスウス感じていたかもしれませんね。
ちょっと本題に入る前に、ここでカルクおさらいしてみましょうか。
コマンドの名前とその由来
まず最初に登場したのはpwd でした。pwd はPrint name of Working Directory の略です。
次に登場したのはls でした。ls はlist の略。
cat は、lesson 2 でファイルの中身をみるために使用しましたが、これは最初に紹介した使い方からは想起しにくいのですが、conCATenate(連結する) の略です。
今は必要を感じないカモですが、実をいうとcatは複数のファイルを連結して表示できるンです。
mkdir は、make directories、cd は、change directory の略です。
そして、前回覚えたばっかりのtree は、階層構造をツリー状に表示するというそのまんまの意味です。
man コマンドを使ってみよう
さてさて、ちょっと寄り道が長くなりましたが、寄り道ついでにもうひとつ、man コマンドについて触れておきます。
今、コマンド名の由来についてツラツラと書きましたが、それらはman コマンドを引けばわかること。なのです(笑)。
man はmanuals の略でして、コマンドの辞書のようなものです。なのでたとえばls の使いかたを忘れてしまったら、man ls と引数に知りたいコマンド名を与えることで、その内容を詳しく表示してくれます。
今はまだ、コマンドを素の状態で使うことしかお教えしてませんが、コマンドにはオプションと呼ばれる追加機能を有するものも存在します。
コマンド自体もたくさんありますが、コマンドに付随するオプションもたくさんあります。そのすべてを覚える必要はありませんし、おそらくすべてを把握できてるヒトはいないでしょう。
man コマンドは忘れっぽい人間のために用意されたコマンドですから、思い出せなかったらドンドンman を引いてLinuxに聞けばよいのです。
ファイルを移動してみよう
さてさて、ここから本題に入ります。
ここでも今までのレッスンで作成した練習用のディレクトリ(working directory:作業ディレクトリ)を引き続き使って練習していきます。
今、サラッとworking directory:作業ディレクトリなんて呼びましたが(笑)、コンピュータを使ってなにか作業をしたり、作り物(プログラミングなど)を作ったりする際、既存の大事なファイル群と分けて取り掛かりたい。ですよね?。
何か新しいこと(プロジェクト:projectなんて言うヒトもいます)を始めるとき、mkdir で作業ディレクトリを作ったりします。
ではでは、さっそくファイルを移動させてみましょう。
今、作業ディレクトリ(first_dir)はこんな状態になっているかと思います。

カレントディレクトリにあるtest02/ をtest01/ に移動させてみます。
使うコマンドはmv です。ターミナルに入力してみましょう。
mv test02/ test01/
mv の書式は感覚的にわかるとは思いますが、mv (移動させたいファイル名) (移動先ディレクトリ名) です。
移動できましたか?
ホントに移動できたかどうか今までに覚えたコマンドを使ってチェックしてみましょう。
使うコマンドはなんでもいいですよ。ls でもtree でも。

tree コマンドの出力結果もだんだん枝分かれして”木のようになってきました”ね(笑)
さて、ここでちょっと疑問を感じた方もいるのではないでしょうか?
サブタイトルに”ファイルを移動してみよう” と謳ってるのに、練習で移動させたのはディレクトリじゃないの??と。
確かに。mv コマンドの説明も矛盾を感じますよね?(移動させたいファイル名) なんて書いてありますし。
ディレクトリもファイル!?
実を言うと、ディレクトリもファイルの一種なのです。Linux の世界はすべてファイルでできています。すべてのデータはファイルが持っているのです。
ディレクトリは、ファイルを格納(しまっておける)できるちょっと特殊なファイルのことなんですね。
ファイルにはその他にもいろいろな種類がありますが、その説明を始めちゃうとモノスゴク話が長くなるので、ここでも保留して、豆知識くらいにとどめておきますが(笑)。
ディレクトリもファイルである。ということはなんとなく覚えておいてください。
ドンドン移動させてみる!
一回mv させただけじゃ練習っぽくないですから、ジャンジャンfileを移動させてみましょう!
移動させるファイルもいくつか新たに作成して、ツリー構造をさらにツリーっぽくしていきます。
まずは使い慣れたmkdir でディレクトリを作りましょう。以下のように入力してみてください。複数ディレクトリを1回で作成
mkdir dir_03 dir_04
カレントディレクトリにdir_03 と dir_04 という2つのディレクトリができたと思います。
mkdir に渡す引数をスペース区切りで複数個与えることで、いま試してみたように2つのディレクトリを一発で作成することができます。3つ作りたければスペース区切りで3つ指定すればOKです。
mv させる対象が2つできたので、さっそく移動させてみましょう。行き先は test01/dir_02/ にして、2個同時に移動させます。
コマンド入力は大丈夫ですか? ターミナル上で以下のように命令を下します。mv で複数のディレクトリを移動
mv dir_03/ dir_04/ test01/dir_02/
ちゃんと移動させられましたか?
tree でチェックしてみましょう。

さて、ここでまたちょっと疑問が生じていませんか??
今回、mv コマンドに指定した引数は3つあって、それぞれスペースで区切られているだけです。
人間の目でパッとみた感じでは、ディレクトリが3つ並んでいるだけに映りますが、それでもlinux は動かしたい2つのディレクトリを行き先の/test01/dir_02/ に間違いなく移動させました。
それはmv コマンドが、スペースで区切られた一番最後のディレクトリが行き先だと知っているからです。
なので行き先のディレクトリさえちゃんと指定すれば、その前に置く移動させたいファイルはいくつあってもOKです。
スペース区切りは空白だけどちゃんと意味がある。ということです。
mv コマンドもう一つの顔
mv にはファイルを移動させる機能の他に、リネーム(rename)というもう一つ重要な機能があります。
つまり、ファイル名やディレクトリ名を変更(書き換える)ことができるのです。
では、さっそく試してみましょう。
カレントディレクトリ(first_dir) にあるdir_01/ をdirectory_01/ という名前に書き換えます。
mv コマンドでファイル名を変更
mv dir_01/ directory_01
