ファイルやディレクトリの整理を行なったりするために必要なコマンドを基
本的なものに絞って紹介する。また、各コマンドのオプションは良く使うものの
み解説する。紹介したもの以外のオプションについてはman
コマ
ンドを利用して調べると良い。
以下の解説の、コマンド起動例の部分で、大括弧 [ ]
で括っ
た部分は省略可能であることを示している。
chdir (cd)
- ディレクトリの移動(CHange DIRectory)
chdir
コマンドはシェルで作業する上での作業ディレク
トリ(カレントディレクトリ)を変更する。直感的にいうと、「今いるディ
レクトリ」を変更する。普通は短縮形の cd
コマンドを
使う。
% cd [移動したいディレクトリ]
とすることで、目的のディレクトリに移動する。引数を省略すると ホームディレクトリに移動する。
pushd popd
- ディレクトリの一時移動と復帰
(PUSH/POP Directory)
現在の作業ディレクトリをディレクトリスタック(ディレク トリの保存棚)に保存して、別のディレクトリに移動する。
% pushd [移動先ディレクトリ]
とすると、「移動先ディレクトリ」に移動する。元々いたディレク トリには
% popd
で戻れる。pushd
は何個でもディレクトリスタックに
積むことができる。pushd
の引数を省略すると、ディレク
トリスタックのトップ(最近いたディレクトリ)とカレントディレクトリを
交換する。つまり、pushd
を繰り返すことで、二つのディ
レクトリを往復できる。
dirs
- ディレクトリスタックの表示
現在のディレクトリスタックの値を表示する。
pwd
- 作業ディレクトリの表示
(Print Working Directory)
現在の作業ディレクトリを表示する。ただ、101教室環境で利用している
シェル(Z-Shell)では、設定によってプロンプトの一部として作業ディレ
クトリが表示されているので、pwd
コマンドを呼ぶ必要性が
低くなっている。
mkdir
- ディレクトリの作成
ディレクトリを作成する。もちろん書き込み権限のあるディレクト リに限る。
% mkdir 新ディレクトリ
とすると、「新ディレクトリ」を作成する。良く使うものとして、 以下のオプションがある。
-m モード
新規ディレクトリの属性を「モード」に指定する。属性に関 しては後述する。
-p
存在しない親ディレクトリを全て作成してから「新ディレクト
リ」を作成する。たとえば、カレントディレクトリに
foo
がない場合、
% mkdir foo/bar
は foo
がないので bar
を作成で
きずエラーになるが、-p
オプションを指定して
% mkdir -p foo/bar
とすると先に foo
を作成してから
bar
を作成してくれる。
rmdir
- ディレクトリの削除
ディレクトリを削除する。
% rmdir ディレクトリ
とすると「ディレクトリ」の中味が空の場合にディレクトリを削除す る。
ls
- ファイルのリスト表示(LiSt)
ファイルを一覧表示する。
% ls [オプション」 [file]
全て引数を省略すると、カレントディレクトリのファイル一覧を表示
する。引数に「file」を指定した場合、それがディレクトリであればそ
のディレクトリに含まれるファイル一覧を表示する。それが普通のファ
イルであればそのファイルを表示する。ディレクトリに含まれる一覧を
表示する場合、ファイル名が .
(ピリオド)で始まるファイ
ル(ドットファイル)は表示されない。良く使うオプションを列挙する。
-a
通常表示されない「ドットファイル」も表示する。
-F
各ファイル名の末尾に、ファイルの種別を意味する1文字の記号
をつけて表示する。実行ファイルを表す *
と、ディ
レクトリを表す /
と、シンボリックリンク(後述)を
表す @
を覚えておくと良い。
-l
ロングフォーマット表示する。
% ls -lF /usr/koeki/ruby/bin
合計 3602
-rwxr-xr-x 1 root other 359 3月 2日 11:16 irb*
-rwxr-xr-x 1 root other 1828188 3月 2日 11:16 ruby*
一番左の10字の記号文字列は、ファイルの種別と属性を表して いる。先頭の文字で代表的なものは
d
l
-
続く9文字の記号は3文字ずつが組の、ファイルのアクセス権を
意味するものとなっている。たとえば、
drwxr-xr-x
は、次のような意味を持っている。
ユーザ グループ 他人 読
み書
き実
行読
み書
き実
行読
み書
き実
行r
w
x
r
-
x
r
-
x
rは読み取り可能であること、wは書き込み可能であること、xは 実行可能であることを示している。一番左の3桁はファイルの所 有者本人、次の3桁は同一グループに属するユーザ、最後の3桁はど ちらでもない他人に対するアクセス権を意味する。
-d
ディレクトリを与えた場合に、そのディレクトリのファイル一 覧ではなく、ディレクトリ自身の情報を表示する。
-C
lsの出力をパイプで別コマンド(lessやmoreなどを含む)に繋ぐ
と、一行に一つのファイルを表示する。-C
オプショ
ンは、これを抑止し、必ず複数カラムで表示する。
-t
通常はファイル名で並べ換えて一覧表示するが、ファイルの タイムスタンプ(新しい順)で並べ換えて表示する。
-u
-t
に似ているが、ファイルのタイムスタンプで
はなく、最終アクセス時刻で並べ換えます。
-r
ファイル一覧の並べ換え順序を逆にする。
-R
指定したディレクトリ以下、全てのサブディレクトリの中味を 再帰的に下って表示する。
cp
- ファイルのコピー (CoPy)
ファイルのコピーを行なう。二つの使い方がある。
% cp ファイル1 ファイル2
「ファイル1」を「ファイル2」で示される宛 先パスにコピーする。
% cp ファイル1…… ディレクトリ
のように最後の引数にディレクトリを指定した場合は、一つ以上のファ イルをそのディレクトリにコピーします。良く使うオプションには以下の ものがある。
-i
コピー先のファイルが既に存在した場合に、上書きしても良い かの確認を求める。
-p
コピー先ファイルの属性やファイル更新時刻などもコピー元と 同じものにする。
-r
コピー元がディレクトリであった場合、そのディレクトリを再 帰的に読み込んで、コピー先ディレクトリにまるごとコピーする。
mv
- ファイルの移動 (MoVe)
ファイルの名前変更、または移動を行なう。
% mv ファイル1 ファイル2
とした場合、「ファイル1」を「ファイル2」 で示されるパス名に変更する。
% mv ファイル1 …… ディレクトリ
のように最後の引数にディレクトリを指定した場合は、一つ以上のファ イルをそのディレクトリに移動する。良く使うオプションとして、以下 のものがある。
-i
移動先のファイルが既に存在した場合に、上書きしても良い かの確認を求める。
-f
移動先にファイルが既に存在した場合でも、 確認を求めない。
-r
コピー元がディレクトリであった場合、そのディレクトリを再 帰的に読み込んで、コピー先ディレクトリにまるごとコピーする。
rm
- ファイルの削除(ReMove)
ファイル(群)を削除する。
以下のオプションが利用できる。
-f
書き込み禁止属性のあるファイルなどの場合も、ユーザに確認 を求めずに強制的に削除する。
-i
消して良いかどうか、ファイルごとにユーザに確認を求める。
-r
引数にディレクトリを指定した場合、そのディレクトリ以下全 てのファイルを消すことを試みる。
ln
- リンクの作成(LiNk)
ファイルに対する、ハードリンク、またはシンボリックリンクを作成 します。ハードリンク、シンボリックリンクの違いに関しては、マニュア ルを参照すること。
tar
- アーカイブファイルの処理(Tape ARchive)
テープアーカイブを作成したりする。ファイルの磁気テープへのバッ クアップなどの目的のために作成されたコマンドだが、複数のファイル をまとめて圧縮してバックアップを取ったり、配布したりするために広く 用いられている。
本来 tar
コマンドは複数のファイルをまとめたり取り
出したりするだけの機能を持つものだが、最近ではそれに加えて圧縮も
同時に行なうことのできる GNU tar コマンドが普及している。101教室
で利用する環境でも、gtar
というコマンド名で GNU tar
が利用できる。
オプションには非常に多くのものがあるので、ここでは典型的な利用 の実例を紹介するに留める。まず、基本オプションとして以下の意味を 覚えよう。
c
アーカイブを作る(Create)。
x
アーカイブからファイルを取り出す(eXtract)。
t
アーカイブ内にあるファイル一覧を表示する(Table)。
v
情報を詳細表示する(Verbose)。
z
アーカイブを圧縮ファイルとして扱う(gZip)。
これらを念頭に以下の操作を見ていこう。以下の例では、アー カイブファイルを圧縮ファイルとして利用する。
% gtar vzcf アーカイブ.tar.gz ファイル群……
「ファイル群」をまとめて「アーカイブ.tar.gz」圧縮ファイル に格納する。「ファイル群」の中にディレクトリがある場合は、 そのディレクトリ以下全てのファイルをまとめて格納する。
% gtar vztf アーカイブ.tar.gz
「アーカイブ.tar.gz」の中に格納されているファイル一覧が表 示される。ファイルがたくさん格納されている場合は、画面が流 れていってしまうので、
% gtar vztf アーカイブ.tar.gz | less
とすると良い(lessに関しては後述)。
% gtar vzxpf アーカイブ.tar.gz
「アーカイブ.tar.gz」圧縮ファイルから、中に含まれているファ イルを取り出す。取り出す操作のことを「展開」という。
du
- ディレクトリ使用量の表示
ディレクトリを指定して、そのディレクトリ以下でのディスク使用量
を表示する。良く利用するのは -s
と -h
オプションで、
% du -sh ディレクトリ
とすると、「ディレクトリ」以下全てのファイル容量を G/M/K いずれかの見やすい単位で表示する。
続いて、ファイルの中味を見たり、中味を処理するために利用するコマンド について説明する。
cat
- ファイルの連結と表示(conCATenate)
% cat ファイル……
とすることで、指定したファイル(複数指定した場合はそれら全てを連 結したもの)の中味を標準出力に出力する。良く使うオプションには以 下のものがある。
-n
各出力行の前に、行番号を付加する。
-v
ファイル中に印字不能文字がある場合、それらを代替表現で表 示する。
catは、ファイルの内容を一気に出力するので、通常は、シェルのパイ
プラインを利用して別のプロセスに渡す場合に利用します。ファイルの中
味そのものを自分が読みたい場合は、次項で説明するless
コマンドを利用する。
nkf
- ファイルの漢字コード変換(Network
Kanji-code Filter)
日本語を含むテキストを読み込み、指定した漢字コードに変換する。 SJIS/JIS/EUCコードに対応している。
% nkf [オプション] [ファイル]…
「オプション」は、変換したい漢字コードに応じて以下のどれかを指 定する。
-j
JISコードに変換する
-e
EUCコードに変換する
-s
Shift JIS コードに変換する
less (jless)
- ファイルの中味の表示(対話的)
ファイルの中味を画面に出力し、一画面表示したところで止まる。
次の一画面分を見たい場合は、SPCキーを押して順次読み進め
ることができる。less
でファイルの中を読んでいるとき
は、画面最下行に、
ファイル名 (END)
のようなプロンプトが表示される。これは、less
のコ
マンドモードに入っていることを示す。less
コマンド
モードで利用できるキー操作としては、以下のものが重要である。
head
- ファイルの先頭部分表示
指定した行数だけ、ファイルの先頭部分を表示する。
% head -行数 ファイル……
とすることで、指定した「行数」だけ表示する。「-行数」を省略す ると、10行だけ表示する。
tail
- ファイルの末尾部分表示
指定した行数だけ、ファイルの末尾部分を表示する。
% tail -行数 ファイル……
とすることで、指定した「行数」だけ表示する。「-行数」を省略す ると、10行だけ表示する。
grep
- ファイルからのパターン検索
正規表現により検索パターンを指定して、そのパターンにマッ チする行を表示する。
% grep [オプション] パターン [ファイル]
とすると、「ファイル」(ファイルを省略した場合は標準入力)から 「パターン」にマッチするものを含む行を検索してその行を標準出力に書 き出す。良く使うオプションには以下のものがある。
-h
複数のファイルを指定した場合でも、マッチした行のファイル 名を表示しない
-i
アルファベットを検索する場合に大文字小文字を同一視する
-l
一致した行ではなく、一致したものがあるファイル名を表示する
-v
そのパターンを含まない行を表示する(反転)
-w
検索パターンを「単語」だと見す
いくつか例を示そう。
% grep abc *
カレントディレクトリにある全てのファイルから "abc" という文字列 を含む行を表示する。ファイルが複数ある場合はマッチする行の先頭に ファイル名も表示する。
% grep -i abc *
上と同様だが、"abc" というパターンでアルファベット大文字小文 字を同一視して検索する。"ABC", "Abc" などの行もマッチする。
% grep -w abc access_log | grep -v xyz
access_log
というファイルから "abc" という単語を含
む行を選んでパイプラインに渡す。パイプラインの先の次のgrepでは、
受け取った行のうち、xyzというパターンを含まない行だけを選
んで表示する。
sort
- 行の並べ換え(ソート)
データを一行単位で並べ換えた結果を出力する。良く使うものとし て、次のオプションが挙げられる。
-u
並べ換えた結果、2つ以上同じデータが並ぶときに、重複行を削 除する。
-n
データを辞書順(文字コード順)ではなく、数値だとみなして並
べ換える。辞書順では "10" より "9" のほうが若い(小さい)と
みなされ "10" が先に来るが、-n
をつけると、数
値としての 10, 9 の大小比較をするので、9のほうが先に来る。
-r
並べ順を逆にする。つまり、昇順(若い順)ではなく、降順(大 きい順)にする。
du
コマンドと合わせて次のように利用することが良くあ
る。
% du -sk */ | sort -nr
最初の du
コマンドで、全ディレクトリに含まれる容量
が得られる。たとえば以下のようになる。
28 Mail 4 maildir 1 nsmail 12 script
行頭にディレクトリ以下のファイル容量がKB単位で表示されるので、
これを sort -nr
に渡すと、数値の大きい順に並べ換えら
れ、
28 Mail 12 script 4 maildir 1 nsmail
という結果が得られる。duコマンドの結果出力が非常にシンプルで、 さみしいと感じていたかもしれないが、このように別のコマンドに渡し て並べ換えなどの別の処理を行なうためには、出力には余計なメッセージ を含ませないことが重要である。
uniq
- 重複行の削除
入力中にあらわれる重複行を削除したものを出力する。以下のオプ ションが良く使われる。
-c
重複している行の内容に重複回数を添えて出力する
-u
以前に出力された行と同一の行は出力しない
wc
- 単語数を数える(Word Count)
入力中にあらわれる、行数、単語数、文字数を数える。たとえば以 下のような結果が得られる。
% wc .z*
2 5 60 .zlogin
485 2823 16921 .zshcompctl
19 49 669 .zshenv
14 39 398 .zshrc
520 2916 18048 total
各行は左から、行数、単語数、文字数、ファイル名という構成です。 良く使うオプションとして以下のものがある。
行数を数える
単語数を数える
バイト数を数える
オプションを指定しなかったときは、-lwc
を指定したの
と同じ意味になる。
ls
コマンドの説明のところで触れたように、Unixファイルシス
テムに存在するファイルやディレクトリには属性という、ファイルの
アクセス許可情報が付加されている。「誰」に対して「何」を認めるかによっ
て組み合わせがあり、「誰に対して」の部分は
の3通りあり、「何を認めるか」の部分は
の3通りがある。3×3の組み合わせで、9通りの許可情報がある。
この、ファイルアクセスの許可情報を変えるコマンドが chmod
である。通常、何かのファイルを作成すると「自分は読み書きできるが、他人は読
むことだけしかできない」という属性が設定される。chmod
コ
マンドでは、この属性を変えることができる。
% chmod 属性 ファイル………
とすると、指定した「ファイル」を新しい「属性」に設定する。 属性は誰(u, g, o)に対して何(r, w, x)を許可(+)または拒否(-)するかという記 号列で指定する。たとえば、他人でもファイルを書き込みできるようにしたい 場合は、
% chmod o+w file
のようにする。同一グループの人に実行権限を与えたいときは
% chmod g+x file
とする。また、u g o 全て、を表す記号として a を使うこともできる。
chmod
で利用できるオプションのうち-R
を覚えて
おくと良い。
-R
指定したファイルがディレクトリだった場合、そのディレクトリを再 帰的に下降して全てのファイルの属性を変更する
ファイルをプリントアウトするためのコマンドについて説明する。Unix環 境では、接続できるプリンタの都合上、Adobe社の開発した PostScript という 形式のファイルに変換してからプリントアウトすることが多くなっている。こ の講座で利用している環境でも PostScript 形式に変換してからプリントアウト する。以下、関連するコマンドを紹介する。
a2ps
- テキストファイルのPostScript形式変換
標準入力からテキストファイルを読み込み、それを PostScript 形式 に変換する。オプションとしては以下のものを覚えておくと便利です。
-l ラベル
印刷ベージのラベルを指定する
-p
デフォルトではA4を左右2面にして用紙を利用するが、
-p
をつけると、縦1面で利用する
-fフォントサイズ
フォントのサイズを指定する。デフォルトは左右利用のとき
6.6、-p
の場合9.8となる。
lpr
- データのプリンタへの送信
入力を、プリンタに送信する。-P
オプションを利用す
ると、出力するプリンタを変更できる。
-Pプリンタ
「プリンタ」に出力する
lpq
- プリントキューの表示
現在出力待ちのプリントキューを表示する。プリントジョブ番号が
付加されて表示されるので、プリントアウトを取り消したいときはその番
号を次のlprm
コマンドに渡す。
lprm
- プリントキューからの削除
キュー番号を指定して、プリント所部をプリントキューから削除する。 ただし、他人のプリントジョブは取り消すことができない。
Unixを利用する大きなメリットとして、どこからでもネットワークを 越えて利用できるという点がある。たとえ、海外出張に行こうと、ネットワー クにさえつながっていれば、普段利用しているコンピュータを利用できるので す。このときに別のコンピュータにログインすることを リモートログインという。
はじめのうちは、単一のサーバマシンでしか作業しないので利用することは
ありませんが、もし、複数のUnixホストを利用するようになったらお馴染になる
であろうコマンドを紹介しておきます。古典的には、リモートログインには
telnet や rlogin
コマンドを利用していましたが、現在ではセキュ
リティの関係からこれらを利用することは推奨されていない。かわりに
Secure SHELLと呼ばれるソフトウェアを利用する。そのうち、リモー
トログインに必要なコマンドを紹介する。
ssh
- リモートホストへの安全なログインやコマンド実行
% ssh [オプション] リモートホスト [コマンド]
のように利用し、「リモートホスト」にログインする。「コマンド」 を指定すると、「リモートホスト」でそのコマンドを実行して終了する。 良く使うオプションとしては、次のものがある。
-l ログイン
リモートホストでのログイン名として「ログイン」を利用する。 ローカルホスト(現在利用しているホスト)とはログイン名が違 う場合に利用する。
-C
通信を圧縮する。遅い回線で利用すると快適になる。
-X
Xのパケットをフォワードする。これにより、リモートホスト でのXプログラムを起動したウィンドウがローカルホストに開ける ようになる。
scp
- リモートホストへの安全なファイルコピー
% scp [オプション] [[ユーザ@]ホスト1:]ファイル1 [[ユーザ@]ホスト2:]ファイル2
リモートホスト間でファイルコピーする。コピー元とコピー先には
ホスト名:パス名
という指定を利用する。たとえば、こちらのホストの
foo.txt
というファイルを、ホスト acchi の
/tmp
ディレクトリにコピーしたいときは、
% scp foo.txt acchi:/tmp
とし、逆にホスト acchi の、bar.html
をこちらのホス
トのカレントディレクトリにコピーしたいときは
% scp acchi:foo.txt .
とする。ユーザ名を省略すると現在のユーザ名(ログイン名)になり ます。良く利用するものとして以下のオプションがある。
-p
属性もコピーする(cpコマンドの-pと同じ)
-C
通信を圧縮してコピーする
-r
ディレクトリを再帰的に下ってまるごとコピーする
sftp
- ftpの安全な置き換え
ftpコマンドと似たインタフェースで、ファイル転送を行なうためのプ ログラムである。こちらはrsyncなどのユーティリティプ ログラムを使うことで利用する機会が減っている感がある。
Unix環境でのWebブラウザは、
Firefox, Chromium emacs-w3
w3m, lynx
が有名である。本講座では
Firefox
を利用する。コマンドラインで、
% firefox &
として起動する。利用方法に関しての説明は省略する。