SFC CNS GUIDE 2004

10.2 ファイルやディレクトリの操作

10.2.1 ディレクトリの再帰的な作成 -- (mkdir -p)

mkdirコマンド ([*]) に `-p' オプションを指定すると, ある階層までのディレクトリを一度に作成できます.

% ls <ENTER>                          ← `dir'がないことを確認する
report.tex
% mkdir dir/dir2 <ENTER>              ← `dir' がないと `dir2' を作れない
mkdir: dir: No such file or directory 
% mkdir -p dir/dir2 <ENTER>           ← -pオプションをつけると `dir2' を作れる 
% ls -F <ENTER>
dir/ 
% cd dir <ENTER>
% ls -F <ENTER>
dir2/ 
% _

`dir' がない状態で `dir2' を作ろうとするとエラーが表示されますが, -pオプションを指定することで, `dir2' までの途中に存在しないディレクトリをすべて作成できます.

10.2.2 書き込み禁止のファイルを確認なしで削除を行う -- (rm -f)

rmコマンド ([*]) に `-f' オプションを指定すると, ファイルが読み込み専用であっても, 確認をせずに削除できます.

% ls -l <ENTER>              ← 保護モードを確認.
-r--r--r--   4 t00000tf      512 Dec 10 12:19 file1 
-r--r--r--   2 t00000tf      512 Dec 10 12:14 file2 
% rm file1 <ENTER>           ← 読み込み専用なので,削除前に確認される
rm:file1: 書き込み保護 444 ですがよろしいですか(yes/no)? y <ENTER> 
% ls -l <ENTER> 
-r--r--r--   2 t00000tf      512 Dec 10 12:14 file2 
% rm -f file2 <ENTER>        ← `-f'オプションをつけると確認されない
% ls -l <ENTER> 
% _ 

10.2.3 ディレクトリの削除 -- (rmdir)

ディレクトリを削除するには,rmdirコマンド (ReMove DIRectory) を利用します. rmdirコマンドでは, 指定したディレクトリの中にファイルやディレクトリが存在する 場合にはディレクトリを削除できません. ディレクトリの中身ごと削除したい場合は, rmコマンドに `-r' オプションを 使います ([*]). lsコマンドの-Fオプションについては [*] を参照してください.

次の例では, `test' ディレクトリを削除しようとしたとき, ディレクトリが空ではなかったので削除ができず, `test' ディレクトリにある `kadai1.tex' を 削除したのちにもう一度rmdirコマンドを実行して, `test' ディレクトリを消しています.

% ls -F <ENTER>                     ← `test' がディレクトリであることを確認
Wnn/            Mail/        test/    
% rmdir test <ENTER>                ← rmdirコマンドを実行したが,ディレクトリが空ではない
rmdir: test: Directory not empty
% cd test <ENTER>                   ← `test'ディレクトリに移動
% ls <ENTER>                        ← ファイルが存在する
kadai1.tex 
% rm kadai1.tex <ENTER>             ← ファイルを削除する
% cd ../ <ENTER>
% rmdir test <ENTER>                ← 再びrmdirコマンドを実行する   
% ls -F <ENTER>                     ← ディレクトリが削除されている
Wnn/            Mail/
% _

次にrmdirコマンド書式を示します.

rmdir [ディレクトリ名]

10.2.4 ワイルドカードを用いたファイルの削除

ファイルの指定にはワイルドカードを利用できますが, 誤ってファイルを削除してしまう可能性がありますので注意してください. ファイルの末尾に `.txt' の付いたファイルを削除しようとして, 誤ってすべてのファイルを消してしまった例を示します.

% ls <ENTER>             
kadai1.tex           kadai2.txt            kadai3.txt          report.tex 
% rm * .txt <ENTER> ←  誤って `*' と `.txt' の間に空白を入れた
% ls <ENTER>        ←  `rm *'が実行され,ファイルがすべて消えた
% _

ワイルドカードを用いてrmコマンドを実行する場合には, 実行前にlsコマンドを利用して確認してください.

% ls * .txt <ENTER>                ← `*' と `.txt' の間に空白が入るのは誤り
kadai1.tex           kadai2.txt            kadai3.txt          report.tex
% ls *.txt <ENTER>                 ← 誤りを直して確認
kadai2.txt kadai3.txt
% rm *.txt <ENTER>                 ← lsをrmに置き換えてコマンドを実行
% ls <ENTER>
kadai1.tex           report.tex
% _

10.2.5 ファイルのコピーの際の上書き確認 -- (cp -i)

cpコマンド ([*]) に `-i' オプション指定すると, コピー先にファイルやディレクトリが存在する場合, 上書きしてかまわないか確認されます.

コピーを実行してよい場合はyを入力してください.

% ls -F <ENTER>
economy/      math/
% cd economy <ENTER>
% ls <ENTER>
report.tex
% cd .. <ENTER>
% cd math <ENTER>
% ls <ENTER>
report.tex
% cd .. <ENTER>
% cp -i economy/report.tex math/report.tex <ENTER>
overwrite math/report.tex? (y/n [n]) y <ENTER>
% _		

10.2.6 ファイルやディレクトリを削除する前に確認のメッセージを表示する -- (rm -i)

rmコマンドを誤って実行して必要なファイルを削除してしまうことがあります. rmコマンドに `-i' オプション指定すると, ファイルやディレクトリを削除する前に確認のメッセージを表示できます.

% rm -i report.tex <ENTER>
remove report.tex? y <ENTER>
% _

% ls -F <ENTER>
economy/      math/
% cd economy <ENTER>
% ls
report.tex
% cd ..
% rm -ri economy<ENTER>
remove economy? y <ENTER>
remove economy/report.tex? y <ENTER>
% _
Valid CSS! Valid HTML 4.01!