21.ファイルを移動するmvコマンド。Tab補完
ナックス「今回は20.新しくディレクトリを作る。mkdirコマンドで作成したディレクトリの中に画像ファイルを移動させます!」
デビー君「いぇい!」
ナックス「ファイルを移動させるにはmvコマンドを使います。mvコマンドの名前の由来はmove(移動する)です。使い方はこうです」
$ mv 移動させたいファイル 移動先
ナックス「それではCUI環境を立ち上げましょう」
デビー君「はーい」
ナックス「CUI環境を立ち上げると、基本的には皆さんは自分のホームディレクトリにいるはずです」
ナックス「まずは、ホームディレクトリに画像ファイルがある場合。前回作ったprivateディレクトリへ画像ファイルを移動させるには次の様にコマンドを打ちます」
$ mv hadaka-inu.jpg private/
ナックス「画像のファイル名はhadaka-inu.jpgでしたね」
デビー君「なるほど。えーっと……」
$ mv hadada-inu.jpg private/
デビー君「っと……」
$ mv hadada-inu.jpg private/ mv: cannot stat `hadada-inu.jpg': No such file or directory
デビー君「あれ?エラーが出たよ?」
ナックス「どれどれ?……あぁ、『hadaka』のところが『hadada』になってしまってますよ」
デビー君「あ!本当だ」
ナックス「そうだ。Tab補完もついでに教えておきましょう」
デビー君「タブほかん?」
ナックス「えーっと、例えばデビー君。まずはコマンドをここまで入力してみてください」
$ mv hada
デビー君「え?途中までってこと?」
ナックス「そうです。でもまだEnterキーは押さないでくださいね」
デビー君「カキカキ……書いたよ?」
ナックス「ここでTabキーを押してみましょう」
デビー君「タブキー?」
ナックス「そうです。キーボードのTabボタンのことです。TabボタンはLinux初心者の方にはあまり馴染みが無いかもしれませんが、どんな種類のキーボードにも必ずTabキーはあるはずです。私のキーボードの場合は一番左端の真ん中のところにTabキーがあります」
デビー君「Tabキー発見!」
ナックス「それを押してみてください」
デビー君「えい!」
$ mv hadaka-inu.jpg
デビー君「あれ!ボクは文字を書いていないのに、勝手にhadaka-inu.jpgになったよ?」
ナックス「Tabキーは、『途中まで文字を入力してさえやれば』その先に打つであろう文字が推測できる場合、その先の文字を勝手に書いてくれる(補完してくれる)便利なキーです。mvコマンドに限らずcdコマンドやlsコマンドなど、ファイル名、もしくはディレクトリ名を指定しなければならないコマンドには何にでも使える最強のボタンです」
ナックス「Tabキーを知っていれば、無茶苦茶長い名前のファイル(またはディレクトリ)や書き間違えやすいファイル(またはディレクトリ)も、簡単に扱うことが出来ます」
ナックス「例えば、oiaaniuvoaqagjieoreiaeqnvaintybiabliiuriaytauという名前のファイル名も、Tabキーを使えばちょちょいのちょいです」
デビー君「なるほど」
ナックス「また、Tabキーはファイルだけでなくディレクトリ名も補完してくれます。ぜひ使いこなしましょう」
デビー君「はーい」
デビー君「えーっと、続きを書かないとな」
$ mv hadaka-inu.jpg pri
デビー君「そういえばディレクトリにもTabキーが使えるんだった。Tabキーを押してみよう。えい!」
$ mv hadaka-inu.jpg private/
デビー君「おぉっ!便利便利!後はEnterキーを押すだけ、っと」
ナックス「ファイルが移動できたかどうかはlsコマンドで確認してみましょう。実は、cdコマンドでprivateディレクトリの中にいちいち移動しなくても次の様に打つことでprivateディレクトリの中を確認できます」
$ ls private/
$ ls private/ hadaka-inu.jpg
デビー君「よし。ちゃんと移動できてる」
ナックス「次はデスクトップディレクトリにhadaka-inu.jpgファイルがある場合です。基本的に考え方は同じです。が、今回はディレクトリの指定方法の勉強もかねて、ホームディレクトリからいちいちデスクトップディレクトリに移動せずにホームディレクトリにいるまま画像ファイルを移動させてみましょう」
デビー君「え?そんなこと出来るの?」
ナックス「はい。次の様にコマンドを打ちます」
$ mv ./Desktop/hadaka-inu.jpg private/
ナックス「ディストリビューションによってDesktopはdesktopだったりデスクトップだったりするかもしれません」
デビー君「ん? ./Desktop/hadaka-inu.jpg の一番最初の./ってなんだ?」
ナックス「えーっと、LinuxのCUI環境で、『現在いるディレクトリ』という意味を表すのは.(ドット)です」
デビー君「そういえばホームディレクトリを表すのは~(チルダ)だったね」
ナックス「そうです。それと同じ考え方です。つまり ./Desktop/hadaka-inu.jpg は『現在(自分が)いるディレクトリの中の』『Desktopディレクトリの中の』『hadaka-inu.jpgファイル』という意味です」
デビー君「なるほど。確かに画像ファイルが移動できたみたいだ」
ナックス「.で『現在のディレクトリ』を意味させる記述方法は基本的に省略出来るため、Linuxユーザーの中には全く使わない人も多くいます。実は今回のコマンドの例でも
$ mv ./Desktop/hadaka-inu.jpg private/
ではなく
$ mv Desktop/hadaka-inu.jpg private/
で全く問題なく動作します」
デビー君「ふーん。.で『現在のディレクトリ』と明確に表記すべき場合とかあるの?」
ナックス「きっとある……と思います」
デビー君「『きっと』?」
ナックス「うーむ。突然言われてもパッと思いつかない……。あるのか?いや、無いのか?うーむ……」
デビー君「あらら。考え込んじゃった」
ナックス「まぁ、知識として覚えておいてください。『明確に『現在のディレクトリ』と表記しないと気持ちが悪い』と言う人はLinuxユーザーの中に結構います」
デビー君「へー。そうなんだ」
ナックス「mvコマンドは基本のコマンドなので重要ですが、さらっと教えたTab補完も実はかなり重要です。正直、Tab補完を使っていないLinuxユーザーなんていません。ぜひ、Tab補完をべしべし使いこなしてください」
デビー君「はーい」
ナックス「次回!実はファイル名やディレクトリ名を変更するのに使うのもmvコマンド(22.ファイル名やディレクトリ名を変更する。mvコマンド)!」
デビー君「え?そうなの?」