logo
 
cpacer

5.1 コマンドの応用

UNIXのコマンドは数多くあります.効率的な作業を行うのに 役立つ応用的なコマンドについて説明します.

5.1.1 ファイル・ディレクトリの表示

5.1.1.1 ファイル内容の表示 -- (cat)

ファイルの内容を表示するには, catコマンド (conCATenate) を利用します.

% cat debate.txt <RET>
point

sighpost
rephrase point
rephrase attack
answer attack
% _
% cat [オプション] [ファイル名] <RET>

catコマンドでは中身を表示するファイルを引数として指定します.

■ファイルの内容に行番号をつけて表示する
`-n'オプションを指定すると, ファイルの内容に行番号をつけて表示できます.
書式 ls -d [ディレクトリ名] <RET>
% cat -n debate.txt <RET>
     1  point
     2
     3  sighpost
     4  rephrase point
     5  rephrase attack
     6  answer attack
% _



5.1.1.2 ディレクトリ情報の表示 -- (ls -d)


■ファイルの内容に行番号をつけて表示する
lsコマンドに`-d'オプションを指定すると, ディレクトリ自体の情報を表示できます.
書式 ls -d [ディレクトリ名] <RET>
% ls -l Mail <RET>		← -l オプションではディレクトリ内部の情報を表す
-rw-r--r--   1 t02000tf  student       462 Apr 17  1998 aliases		
-rw-r--r--   1 t02000tf  student        22 Dec  7 01:55 context		
drwx------   2 t02000tf  student       512 Dec 24 14:32 draft		
drwxrwxr-x   2 t02000tf  student     97280 Feb 28 01:15 inbox		
% ls -ld Mail <RET>		← -d オプションを付加するとディレクトリの情報を表す
drwx------   4 t02000tf student       512 Dec 10 12:19 Mail 
% _



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


■再帰的にディレクトリを作成する
ある階層までのディレクトリを一度に作成するためには `-p'オプションを指定します.
書式 mkdir -p [ディレクトリ名] <RET>
%  ls <RET>			← `dir`がないことを確認する
report.tex
% mkdir dir/dir2 <RET>		← `dir`がないと`dir2`をつくれない
mkdir: ディレクトリの作成に失敗しました。
"dir/dir2";  ファイルもディレクトリもありません。
% mkdir -p dir/dir2 <RET>	 ← -pオプションを付けると`dir2`を作れる
% ls -F <RET>
dir
% cd dir <RET>
% ls <RET>
dir2
% _
`dir`が無い状態で`dir2`を作ろうとするとエラーが表示されますが,`-p`オプションを指定することで,`dir2`までの途中に存在しないディレクトリを全て作成できます.



5.1.3 ファイル・ディレクトリの削除

ファイルやディレクトリを削除するコマンドや特定のファイルを削除するときの注 意について説明します.

5.1.3.1 書き込み禁止ファイルの削除 -- (rm -f)


■書き込み禁止のファイルを確認なしで削除を行う
`-f'オプションを指定すると, ファイルが読み込み専用 であっても,確認をせずに削除できます.
書式 rm -rf [ファイル名] <RET>
%  ls <RET>			← 保護モードを確認
-r--r--r--    4 t02000tf      512 Dec  10  12:19 file1
-r--r--r--    2 t02000tf      512 Dec  10  12:14 file2
% rm file1 <RET>			← 読み込み専用なので,削除前に確認される
rm:file1: 書き込み保護 444 ですがよろしいですか(yes/no)? y <RET>
% ls -l <RET>
-r--r--r--    2 t02000tf      512 Dec  10  12:14 file2
% rm -f file2 <RET>			← `-f' オプションを付けると確認されない
% ls -l <RET>
% _
ただし, ファイルの所有者が他人に書き込み権限を与えないように設定している場合には,削除はできません.



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

ディレクトリを削除するには, rmdirコマンド (ReMove DIRectory) を利用します. rmdirコマンドでは, 指定したディレクトリの中にファイル・ディレクトリが存在する場合にはディレクトリを削除できません. ディレクトリの中身ごと削除したい場合は, rmコマンドの-rオプションを利用します.

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



% rmdir [ディレクトリ名] <RET>


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

ファイルの指定にはワイルドカードを利用することもできますが, 誤ってファイルを削除してしまう可能性があります.

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

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

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


5.1.4 確認メッセージの表示

コマンドを実行する前に確認メッセージを表示できます. これによってファイルの誤った上書きや削除を防げます.

5.1.4.1 ファイルのコピー -- (cp -i)

■コピーの際に確認する
`-i'オプション指定すると, cpコマンド実行時にコピー先にファイルやディレクトリが存在する場合, 上書きしてかまわないか確認をとります.
書式 cp -i [オプション] [ファイル,ディレクトリ名1] [ファイル,ディレクトリ名2] <RET>
コピーを実行して良い場合はyを入力してください.
%  ls -F <RET>
assignment/     groupwork/      report.tex      report2.tex
% cp -i assignment/report2.tex . <RET>
cp: ./report2.tex を上書きしてもよろしいですか (yes/no)? n <RET>
% ls -F <RET>
assignment/     groupwork/      report.tex      report2.tex
% cp -i assignment/report3.tex . <RET>
% ls -F <RET>
assignment/     groupwork/      report.tex      report2.tex      report3.tex
% _



5.1.4.2 ファイル・ディレクトリの削除 -- (rm -f)


■ファイル・ディレクトリを削除する前に確認のメッセージを表示する
書式 rm -i [ファイル名] <RET>
% rm -i  <RET>
 report.tex を消去しますか(yes/no)? y<RET>
% _
何もオプションを指定しない場合,rmコマンドを誤って実行して必要なファイルを削除してしまうことがあります.`-i'オプションを指定することで,ファイルの削除前に確認のメッセージを求められます.



5.1.5 検索

特定の文字列を含むファイル・ディレクトリや文字列を検索できます.

5.1.5.1 ファイル・ディレクトリの検索 -- (find)

ファイル・ディレクトリを検索するには, findコマンドを利用します.

% ls <RET>		← カレントディレクトリの状態を調べる
report.txt  report.dvi  report.ps  report.jpg  report.tex
% find . -name report.tex -print <RET> 
(↑ カレントディレクトリから`report.tex'というファイルを検索する)
./report.tex
% _

この例では, `t02000tf'のカレントディレクトリに `report.tex'というファイルが存在することがわかります.

% find [検索対象ディレクトリ] [検索条件] -print

なお, findのオプションは, 検索条件の位置で指定するものと, コマンドの位置で指定するものがありますので注意してください. オプションは省略できません.

■-print 結果を表示する
書式 find [検索対象ディレクトリ] [検索条件] <RET>
% find . -name report.tex -print <RET>
./report.tex
./groupwork/report.tex
…


次にコマンドとして指定するオプションを示します. コマンドは複数指定できますが, 省略した場合は`-print'オプションを指定された扱いになります.

■-name ファイル名で検索する
書式 find [検索対象のディレクトリ] -name [ファイル・ディレクトリ名] [コマンド] <RET>
% find . -name report.tex -print <RET>
./report.tex
./groupwork/report.tex
…



■-atime 一定時間内にアクセスされたファイルを検索する
書式 find [検索対象ディレクトリ] -atime [日付] [コマンド] <RET>
% find /home/archives/t02000tf -atime +30 -print <RET>
(↑メディアサーバないで30日以上アクセスしていないファイルを検索)
/home/archives/t02000tf/taro.jpg
/home/archives/t02000tf/hanako.tiff
/home/archives/t02000tf/movie/document.mov
/home/archives/t02000tf/music/jazz.wav
…


5.1.5.2 文字列の検索 -- (grep)

あるファイルが 指定の文字列を含んでいるか検索する場合には, grepコマンドを利用します.

% grep t02000tf file <RET>	 ← `file1'というファイルから検索する
% grep t02000tf file1 file2 file3 <RET> ← `file1',`file2',`file3'から検索する
% grep t02000tf Mail/inbox/* <RET> ← ワイルドカードを用いて複数のファイルを指定できる

この例では, `t02000tf'という文字列をファイルから検索しています.

% grep [オプション] [キーワード] [ファイル名] <RET>

grepコマンドは, 次のオプションを利用できます. オプションは省略できます.

■大文字・小文字を区別しないで検索する
書式 grep -n [キーワード] [ファイル名]
% cat file <RET>			← ファイルの中身をcatコマンドで確認
test
Test
% grep -n test file <RET>
 1 : test	← マッチした文字が何行目にあるか表示する
% _




■キーワードを大文字,小文字を区別せずに検索するには`-i'オプションを使用します.
書式 grep -i [キーワード] [ファイル名]
% cat file <RET>		← ファイルの中身をcatコマンドで確認
test
Test
% grep test file <RET>	← 普通のgrepでは大文字,小文字を区別する
test
% grep -i test file <RET>	← -iオプションを付けると区別しない
test
Test
% _