Envaderを利用して、Linuxコマンド mv/cpについて学んだ。

どうも。30代後半からIT業界、エンジニアへ転職する物語の主人公、コバキチです。

Linuxコマンドの中でも基本であろう、mv/cpコマンドについて学んだので、その振り返りとまとめになります。

学習した環境

学習するに当たり利用した環境は、環境構築が不要で、オンラインでLinux環境が学べるオンライン学習サービス、Envaderを利用しました。

気になる方はリンクを貼っておきますので、参考までにどうぞ。

Envader

コース一覧

今回学んだシナリオ

mvコマンド(Move)

mvコマンドでできる事

  • ファイル、ディレクトリの移動

  • ファイル、ディレクトリの名称の変更

mvコマンドでファイルを移動してみる

実行例

mv 移動させたいディレクトリ名(またはファイル名) 移動先のディレクトリ名
#ファイルを作成
envader@172-19-1-2:~$ touch hoge.txt
envader@172-19-1-2:~$ ls
hoge.txt  myapp  package.json

#mvコマンドでhoge.txtをmyappディレクトリへ移動する
envader@172-19-1-2:~$ mv hoge.txt myapp/

#hoge.txtが消えた
envader@172-19-1-2:~$ ls
myapp  package.json

#myappディレクトリへhoge.txtが移動されている
envader@172-19-1-2:~$ cd myapp/
envader@172-19-1-2:~/myapp$ ls
hoge.txt

mvコマンドでファイル名を変更してみる

実行例

envader@172-19-1-2:~/myapp$ ls
hoge.txt

#hoge.txtをchange.txtへ変更してみる
envader@172-19-1-2:~/myapp$ mv hoge.txt change.txt

#hoge.txtからchange.txtへ変更できた
envader@172-19-1-2:~/myapp$ ls
change.txt

ここまでは単純にファイルを移動しただけですが、ファイルだけではなく、ディレクトリを丸ごと移動することもできるみたいです。
やってみましょう。

mvコマンドでディレクトリを丸ごと移動してみる

実行例

envader@172-19-1-2:~$ ls
dir1  dir2  myapp  package.json

#dir1ディレクトリをdir2ディレクトリへ移動
envader@172-19-1-2:~$ mv dir1 dir2

#dir1がなくなっている
envader@172-19-1-2:~$ ls
dir2  myapp  package.json

#dir2へディレクトリを移動
envader@172-19-1-2:~$ cd dir2

#dir2ディレクトリの中にdir1ディレクトリを発見
envader@172-19-1-2:~/dir2$ ls
dir1

ちゃんとdir1ディレクトリがdir2ディレクトリへ移動できているのが確認できたかと思います。

注意点

mvコマンドを実行する際には、移動先に同名のファイルやディレクトリがあった場合、内容が上書きされてしまうので注意しなければなりません。
上書きされたく無い場合には、下記で紹介している-iオプションをつけるか、-nオプションをつける必要があります。

mvコマンドのオプション

以下オプション一覧です。

-f (force ) 移動先に同名のファイルがある場合、強制的に移動する。(上書きされる。)

-i (interactive) 対話的に、上書き前に確認する。移動先のディレクトリにすでに同じ名前のファイルやディレクトリがあった場合に、確認のメッセージが表示される。

-n (-no-clobber) 移動さきに同じ名前のファイルやディレクトリがあった場合、処理を実行しない。

-b (backup) 移動する際に上書き(削除)されるファイルがあった場合、そのファイルのバックアップを作成する。これをする事で、移動先に同じ名前のファイルやディレクトリがあった場合には、自動で複製されたファイル、ディレクトリが作成されます。

-v (verbose) これをつける事により、ディレクトリ、ファイルを移動した際に経過が表示されます。視覚的に分かるので、わかりやすいです。

オプション実行例

イメージが自分でも湧かなかったので、実際にやってみました。
まずは-bオプション
バックアップの作成

#-bでバックアップ
#dir2には既にdir1が存在している

envader@172-19-1-2:~/dir2$ ls
dir1
envader@172-19-1-2:~/dir2$ cd
envader@172-19-1-2:~$ ls
dir2  myapp  package.json

#ホームディレクトリにdir1を作成
envader@172-19-1-2:~$ mkdir dir1
envader@172-19-1-2:~$ ls
dir1  dir2  myapp  package.json

#-bオプションを付けてdir1をdir2へ移動してみる
envader@172-19-1-2:~$ mv -b dir1 dir2
envader@172-19-1-2:~$ ls
dir2  myapp  package.json
envader@172-19-1-2:~$ cd dir2

#dir1~というバックアップディレクトリが作成されている
envader@172-19-1-2:~/dir2$ ls
dir1  dir1~

dir1~というバックアップディレクトリが作成されていますね。
なるほど、こういう事か。。。
これを使えば、うっかりミスをして大切なファイルを間違えて上書きしてしまった〜なんてことはなくなりそうですね。

次は-vオプション
詳細情報の表示

envader@172-19-4-2:~$ ls
dir1  dir2  myapp  package.json

#dir1をdir2ディレクトリへ移動
envader@172-19-4-2:~$ mv -v dir1 dir2
'dir1' -> 'dir2/dir1'

dir1をdir2ディレクトリへ移動しましたよ〜との詳細情報が表示されていますね。
これはちゃんと移動が成功したかどうかも分かりやすいので使ったほうがよさそうなオプションです。

cpコマンド(Copy)

cpコマンドは、既存のファイルやディレクトリを複製する際に使用するコマンドです。

使い方

cp オプション コピー元ファイル(ディレクトリ) コピー先ファイル(ディレクトリ)

なかなかシンプルな使い方になりそうです。

#test.jsファイルの作成
envader@172-19-4-2:~$ touch test.js
envader@172-19-4-2:~$ ls
dir2  dir3  myapp  package.json  test.js

#test.jsファイルをtest2.jsファイルとしてコピーする
envader@172-19-4-2:~$ cp test.js test2.js

#コピーが完了した。
envader@172-19-4-2:~$ ls
dir2  dir3  myapp  package.json  test.js  test2.js

これが通常のcpコマンドの使い方ですね。

cpコマンドのオプション

続いてcpコマンドのオプションの紹介です。

-i  コピーにより上書きされるファイルがある場合、確認メッセージを表示する。

-v  コピーの実行内容を表示する。

-n  コピー先に同名のファイルが存在したら、処理を中断してコピーしない。

-f  コピー先に同名のファイルが存在しても、強制的にコピーする。ファイルが上書きされてしまうので要注意

-b 
コピーするときに、バックアップファイルが作成される。

-s  シンボリックリンクを作成する。

大体mvコマンドと似たり寄ったりな感じですね。

まとめ

  • mvコマンドでは、ファイルやディレクトリの移動、名前の変更をする事ができる。

  • mv,copyコマンドどちらも、ファイルが上書きされてしまうのを注意しなければならない。

  • オプションについても、大体似ている。


最後まで読んでいただきありがとうございました。

参考にさせていただいた記事一覧

【 mv 】コマンド――ファイルやディレクトリを移動する/名前を変更する

【Linuxコマンド】mvでファイル・ディレクトリを移動する方法

ファイルやディレクトリをコピーするcpコマンドの使い方!【Linuxコマンド集】


この記事が気に入ったらサポートをしてみませんか?