はうすてんぼぶ

コードかいてて疑問に思ったことや、興味あることをつらつらと暇なときに書く場所、ここはそんな場所

Unixシェルコマンドの勉強 part 2

さて、二回目。

はじめに

前回からの続き。
今回は、

cd, mkdir, rmdir, cp

の4つ。

一回目と変わらず、参考資料は、Googleの検索結果と、昔買った参考書「Amazon.co.jp: 改訂 新Linux/UNIX入門: 林 晴比古: 本」。

cd

概要

カレントディレクトリを移動する。
Change working Directoryが語源。

以下のように使う。

% cd [dir_name]

[dir_name]を省略すると、ホームディレクトリに移動する。

参考書に書かれている便利な使い方を載せる。

% cd ..   (ひとつ上のディレクトリに移動する)
% cd ../dir_1 (ひとつ上のディレクトリにあるサブディレクトリに移動する)
% cd ~ (ホームディレクトリに戻る)
% cd (同上)
% cd ~- (直前のディレクトリに戻る)

オプション

cdコマンドはオプションを付けられない。
man cdってやってもマニュアルがでてこないのは、「おまえそれくらい知ってろよ」ってことなのだろうか。

mkdir

概要

ディレクトリを作成する。
語源は、MaKe DIRectories

以下のように使う。

% mkdir [dirctory_1] [directory_2] ... 

[dirctory_n]にディレクトリ名を入れる。
引数を追加することで、一度に複数のディレクトリを作ることができる。

オプション

参考書に書かれていた-pについてだけ言及する。

-p

mkdirの引数にディレクトリ名を入れれば、ディレクトリは作られるが、以下のように、サブディレクトリのサブディレクトリを作ることもできる。

% mkdir dir1/dir2
mkdir: ディレクトリ `dir1/dir2' を作成できません: そのようなファイルやディレクトリはありません

ただし、もしdir1が無いと、例のようにそんなディレクトリありません、みたいなエラーが出力される。

% mkdir dir1 dir1/dir2

としてもよいが、子の子の子とかの場合、とても手間。

こういうときは、-pオプションを付けることで、一番最後のサブディレクトリの親ディレクトリが無い場合は自動的に作ってくれる。

% mkdir -p dir1/dir2

語源は、parents。

rmdir

概要

空のディレクトリを削除する。
語源は、ReMove empty DIRectories。

使い方は、

% rmdir [directory_1] [directory_2] ...

のようになる。
使い方は、上のmkdirの逆バージョンと考えて問題ない。
空のディレクトリでないと削除できない点に注意。

オプション

mkdirと同じように-pオプションが使えるが、途中で空でないディレクトリがあると削除処理がそこで止まってしまうので、大分使い勝手は悪い。

ディレクトリをまるごと削除するときは、下に取り上げるrm -rを使う。

rm

概要

ファイルを削除する。
語源はReMove。

使い方は、以下の通り。

% rm [file_1] [file_2] ...

削除するファイル[file_n]は複数指定できる。

オプション

主なオプションは3つ。

-i

削除確認メッセージを表示する。書き込み禁止ファイル時の警告もする。

これを付けると、削除する際に、yes/noの確認がされる。

% rm file1
rm: 通常ファイル `file' を削除しますか? n

% ls
file1

% rm file1
rm: 通常ファイル `file' を削除しますか? y

%ls

確認に対する答えは「y」で始まっていればyesと答えたことになり、それ以外はnoとして処理される。

-f

書き込み禁止ファイルであっても警告を出さずに削除する。

恐ろしいオプション

下の-rオプションと/を組み合わせると一撃必殺される。

-r

指定ディレクトリを削除する。

rmdirの上位互換という扱いで問題無い。
指定したディレクトリ以下にあるファイルもディレクトリも全て削除される。

-irとすると鬱陶しいぐらい確認用のメッセージが表示され、-rfとすると無慈悲な削除が行われる起こるかもしれない。

おわりに

今回は、cdmkdirrmdirrmの4つのコマンドを取り上げた。

削除系のコマンドはとんでも無いことが起こりうるので寝ぼけているときとか意識が朦朧としている時にやってはいけない。