UNIXのコマンドは数多くあります.効率的な作業を行うのに 役立つ応用的なコマンドについて説明します.
ファイルの内容を表示するには, 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 % _ |
■ファイルの内容に行番号をつけて表示する | |
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 % _ |
■再帰的にディレクトリを作成する | |
ある階層までのディレクトリを一度に作成するためには `-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`までの途中に存在しないディレクトリを全て作成できます. |
ファイルやディレクトリを削除するコマンドや特定のファイルを削除するときの注 意について説明します.
■書き込み禁止のファイルを確認なしで削除を行う | |
`-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> % _ |
|
ただし, ファイルの所有者が他人に書き込み権限を与えないように設定している場合には,削除はできません. |
ディレクトリを削除するには,
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>
ファイルの指定にはワイルドカードを利用することもできますが, 誤ってファイルを削除してしまう可能性があります.
% 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 % _
コマンドを実行する前に確認メッセージを表示できます. これによってファイルの誤った上書きや削除を防げます.
■コピーの際に確認する | |
`-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 % _ |
■ファイル・ディレクトリを削除する前に確認のメッセージを表示する | |
書式 | rm -i [ファイル名] <RET> |
% rm -i <RET> report.tex を消去しますか(yes/no)? y<RET> % _ |
|
何もオプションを指定しない場合,rmコマンドを誤って実行して必要なファイルを削除してしまうことがあります.`-i'オプションを指定することで,ファイルの削除前に確認のメッセージを求められます. |
特定の文字列を含むファイル・ディレクトリや文字列を検索できます.
ファイル・ディレクトリを検索するには, 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 … |
あるファイルが 指定の文字列を含んでいるか検索する場合には, 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 % _ |