ディレクトリの作成、コピー、移動、削除
ディレクトリの作成、コピー、移動、削除
mkdir(MaKe DIRectory)コマンドでディレクトリを作成する
1 | mkdir [オプション] 作成するディレクトリのパス |
実践①: 存在しないディレクトリの直下に、ディレクトリを作成する
1 | [user01@localhost ~]$ mkdir Music/dir1 |
2 | mkdir : ディレクトリ `/Music/dir1' を作成できません: そのようなファイルやディレクトリはありません |
図
実践①: 存在しないディレクトリの直下に、ディレクトリを作成する
1 | [user01@localhost ~]$ mkdir Music/dir1 |
2 | mkdir : ディレクトリ `/Music/dir1' を作成できません: そのようなファイルやディレクトリはありません |
現在のディレクトリ(user01のホームディレク)の中に、
まだ存在しないディレクトリ(Musicディレクトリ)の直下にdir1ディレクトリを作るために、
上記のコマンドを実行しましたが、実行結果の通り、上手く作成できませんでした。
これは、作成したいディレクトリ(dir1)が属するディレクトリ(Music)が、そもそも
存在していないためです。
図
-p オプションにより、深い階層まで、まとめてディレクトリを作成する
では、このように存在しないディレクトリの直下にディレクトリを作るためには、どうすればよいのでしょうか。それは、mkdirコマンドで、-pオプションを使うことで実現します。
-p オプションは、引数に指定したディレクトリが属する、どこかの階層のディレクトリが存在しない場合に、存在しない階層も、まとめてディレクトリを作成するためのオプションです。
実践②:-pオプションの利用
1 | [user01@localhost ~]$ mkdir -p Music/dir1/dir11 |
1 | [user01@localhost ~]$ ls -R |
2 | .: |
3 | Music tmp |
4 |
5 | ./Music: |
6 | dir1 |
7 |
8 | ./Music/dir1: |
9 | dir11 |
10 |
11 | ./Music/dir1/dir11: |
図
実践③:複数のディレクトリを作成する
複数のディレクトリを、まとめて作るためには、複数のディレクトリをスペースを空けて、指定します。
1 | [user01@localhost ~]$ mkdir Movie Books |
1 | [user01@localhost ~]$ ls |
2 | Books Music Movie |
図
cpコマンドで、ディレクトリをコピーする
1 | cp -r コピー元ディレクトリのパス コピー先ディレクトリのパス |
ディレクトリをコピーするにはcpコマンドを使います
実践①:事前準備(ファイルの作成)
1 | [user01@localhost ~]$ echo ‘Hello’ > Music/dir1/dir11/hello |
echoコマンドは、数字や文字列などを画面に出力するためのコマンドです。
また、「>」はリダイレクトというコマンドであり、出力結果(‘Hello’)をファイルに保存(Helloファイルに保存)するために、使用します。
詳しくは、この章の後半で解説します。
実践②:-rオプション無しで、ディレクトリをコピーする
-rオプションなしで、ディレクトリ(Musicディレクトリ下のdir1ディレクトリ)が、
(Movieディレクトリに)コピーできるか試すために、次のコマンドを実行してください。
1 | [user01@localhost ~]$ cp Music/dir1 Movie |
2 | cp : ディレクトリ `Music/dir1' を省略しています |
図
すると、-rオプションがないため、エラーになることが確認できます 。
実践③:-rオプション有で、ディレクトリをコピーする
一方、-rオプションを含めて、ディレクトリの作成を試すために、次のコマンドを実行してみてください。
1 | [user01@localhost ~]$ cp -r Music/dir1 Movie |
図
実践④:作成したディレクトリの中身を確認する
実行した上で、lsコマンドを使ってディレクトリの中身を確認すると、無事にディレクトリが作成できたことが確認できます。
また、ディレクトリだけでなく、先ほど作成したファイルを含め、ディレクトリの中にあった全てのファイルやディレクトリも併せて、作成できたことがわかります。
1 | [user01@localhost ~]$ ls -l Movie/dir1 |
2 | drwxrwxr-x 2 user01 user01 6 2月 5 13:44 dir11 |
図
ディレクトリを移動するにはmvコマンドを使います
1 | mv 移動元ディレクトリのパス 移動先ディレクトリのパス |
実践①:ディレクトリの移動
Movieディレクトリの下のdir1ディレクトリをBooksディレクトリに移動
1 | [user01@localhost ~]$ mv Movie/dir1 Books |
実践②:移動元のディレクトリ(Movie)の中身を確認する
1 | [user01@localhost ~]$ ls Movie/dir1 |
2 | ls : Movie/dir1 にアクセスできません: そのようなファイルやディレクトリはありません |
実践③:移動先のディレクトリ(Books)の中身を確認する
1 | [user01@localhost ~]$ ls -l Books/dir1 |
2 | drwxrwxr-x 2 user01 user01 6 2月 5 13:45 dir11 |
図
実践④:mvコマンドでファイル名を変更する
mvコマンドは、同じディレクトリでファイルを移動するように指定すると、ファイル名を変更することができます。
具体的には、移動元として指定したファイル名が、移動先として指定したファイル名に変更されます。
1 | [user01@localhost ~]$ mv Movie Movies |
2 | [user01@localhost ~]$ ls |
3 | Books Movies Music |
図
rmdir(ReMove DIRectory)コマンドで、ディレクトリを削除する
1 | rmdir 削除するディレクトリのパス |
削除するための条件:ディレクトリの中が、空である必要がある
このコマンドでディレクトリを削除するためには、削除したディレクトリの中に
ファイルやディレクトリが存在しない、空の状態である必要があります。
空の状態でないと削除されません。
実践①:ディレクトリを削除する(dir1ディレクトリを削除 )
1 | [user01@localhost ~]$ rmdir Music/dir1 |
2 | rmdir : `Music/dir1' を削除できません: ディレクトリは空ではありません |
上記のコマンドで、dir1ディレクトリを削除しようと試みましたが、ディレクトリ直下にディレクトリが存在するため、削除できないことが確認できました。
rmコマンドで、ディレクトリの中身ごと削除する
1 | rm -r 丸ごと削除するディレクトリのパス |
以上の内容から、 rmdirコマンドはディレクトリの中を空にする必要があることが
わかりましたが、rmコマンドを使うことで空にしなくてもディレクトリの中身ごと削除することができます。
具体的には、書式の通り、-rオプションを加えることで実現できます。
rmコマンドで、ディレクトリの中身ごと削除する
実践①:rmコマンドで、ディレクトリの中身ごと削除する
1 | [user01@localhost ~]$ rm -r Music/dir1 |
2 | [user01@localhost ~]$ ls -l Music/dir1 |
3 | ls : Music/dir1 にアクセスできません: そのようなファイルやディレクトリはありません |
図
rmコマンドの便利なオプションの一覧
rmコマンドで、一挙に削除してしまわないように以下のような便利なオプションがあります
実践③:削除、移動したファイルの復活
この後の章で使うため、先ほど削除や移動した、MusicとMoviesディレクトリ以下を復活させておいてください。
1 | [user01@localhost ~]$ cp -r Books/dir1 Music |
2 | [user01@localhost ~]$ cp -r Books/dir1 Movies |