UNIX/LINUXコマンドの使用法

卒研室のLinuxマシンでのUNIX/Linuxコマンドの基本的な使い方を説明します。

パスについて

Unix/Linuxコマンドを扱う上で、PATH(パス)という概念を知る必要があります。 Unix/Linuxのディレクトリ(Windowsでいうところのフォルダ)はツリー構造 をしており、最上位にあるもをのroot(ルート)と呼びます。ルートは 記号、"/"で表します。この下に様々なディレクトリ、ファイルが収録さ れます。ツリー構造の模式図を下図に示します。

ツリー構造

ディレクトリを四角で、ファイルを楕円であらわしています。

相対パス

相対パスとは自分の位置を中心に他がどのように見えるかを示すものです。自分の現在地が"USER2"だとします。そうすると、その下にある "Mail"、"rpm"などはそのままの名前で見えます。 "USER2"の下の"work"の下の"file1"は、 "work/file1"となります。ディレクトリやファイルの区切り記号は "/"(スラッシュ)です。"USER2"より二つ上にある "home"は"../../home"となります。".."は一つ上を意味する特別なディレクトリです。では、"local"はどのように見えるでしょうか?答えは"../../../usr/local"です。

"USER2"から見て、"Mail"や"rpm"などは そのままの名前で見えると言いましたが、"./Mail"や "./rpm"としても構いません。"."は現在の位置を示す 特別なディレクトリです。

絶対パス

ルートからそのファイル/ディレクトリ名までの過程を全て記述するものです。"USER2"の下の"work"の下の"file1"は、絶対パスで 記述すると、"/home/sotsuken_00/USER2/work/file1"となります。

ホームディレクトリ

ユーザーがログイン後に入るディレクトリをホームデイレクトリと言います。(卒研生のみなさんのホームデイレクトリは/home/sotsuken_xx/User-IDです。 sotsuken_xxのxxには西暦の下二桁がはいります。User-IDにはログイン名が入ります。)

コマンドの記述法

コマンド名を"command"とします。単独で実行するときは次のようにキーボードからターミナル上に"command"とタイプし、最後にリターンキーを押します。

$ command

"$"はプロンプトで入力する必要はありません。

コマンドにオプション(ここでは"-o"とした)を付けて実行する場合は次のようにコマンドとオプションの間に半角スペースを一つ以上入れて実行します。

$ command -o

オプションに引数(ここでは"OARG"とした)を与えることができる場合は

$ command -o OARG

あるいは

$ command -oOARG

とします。複数のオプション(ここでは"-o"と"-p"した)を指定 できる場合は

$ command -o -p

あるいは

$ command -op

とします。オプションの指定方法はコマンドによって異なるので、詳細はコマンドごとにマニュアルで確認してください。

コマンドが引数(ここでは"CARG"とした)を取る場合は、

$ command CARG

とします。やはりコマンドと引数の間に半角スペースが一つ以上必要です。

コマンドが引数(ここでは"CARG"とした)とオプション(ここでは "-o"とした)を取る場合は、

$ command CARG -o

あるいは、

$ command -o CARG

コマンドが引数(ここでは"CARG"とした)とオプション(ここでは "-o"とした)を取り、オプションも引数(ここでは"OARG"とした )を取る場合は

$ command CARG -o OARG

あるいは、

$ command CARG -oOARG

あるいは、

$ command -o OARG CARG

あるいは、

$ command -oOARG CARG

とします。引数やオプションの指定方法はコマンドによって異なるので、詳細はコマンドごとにマニュアルで確認してください。

アクセス権(パーミッション)について

Unix/Linuxではファイルやディレクトリに対してアクセス権(パーミッション)を設定してアクセス制限することができます。アクセス権(パーミッション)には次の3種類があります。

種類 記号 内容
ファイル ディレクトリ
読む(read) r ファイルの内容を参照可 ディレクトリの内容を参照可
書く(write) w ファイルに書込み可 ディレクトリの名前変更、削除可
ディレクトリ内で、ファイルやディレクトリの作成、名前変更、削除可
実行する(excute) x ファイルを実行可 ディレクトリに移動可

パーミッションがなければ上記の内容は不可になります。ファイルが実行可になっ ていても、そのファイルが実行形式でなければ実行できませんので注意してください。

Unix/Linuxでは、ファイルやディレクトリのパーミッションを user(ユーザ)、group(グループ)、other(その他)毎に設定することが可能です。それぞれの意味は下記の通りです。

種類 記号 内容
user u ファイルやディレクトリの所有者
group g 複数のユーザーからなるグループ
other o それ以外

よく使うUNIXコマンド

使用する頻度が高いと思われるコマンドを示します。

ファイル/ディレクトリ操作

コマンド名 内容
pwd カレントディレクトリの表示
ls ファイルとディレクトリの表示
cd ディレクトリ間の移動
touch ファイルのアクセス時刻と修正時刻の変更
rm ファイルまたはディレクトリの削除
mkdir 新規ディレクトリの作成
rmdir 空のディレクトリの削除
mv ファイルまたはディレクトリ名の変更
cp ファイルまたはディレクトリを複製
cat テキストファイルの内容の表示
more テキストファイルの内容の1画面毎の表示
less テキストファイルの内容の1画面毎の表示(moreの高機能版)
head テキストファイルの内容の先頭数行を表示
tail テキストファイルの内容の末尾数行を表示
chmod ファイルまたはディレクトリのアクセス権の変更
grep 文字列の検索
wc テキストファイルのバイト数、単語数、行数の表示
find ファイルやディレクトリの検索

プロセス操作

コマンド名 内容
ps プロセスの状態を表示
kill プロセスの停止

アーカイブ

コマンド名 内容
gzip ファイルの圧縮、解凍
bzip2 ファイルの圧縮、解凍
tar ファイルやディレクトリのアーカイブ

ユーティリティ

コマンド名 内容
man オンラインマニュアルページの整形表示
jman manの日本語対応版(Vine Linuxの独自コマンド)
who 現在のログオン情報の表示
date 現在時刻の表示
echo 与えられた文字列の表示

ネットワーク

コマンド名 内容
ftp ネットワークでのファイル転送
sftp セキュアなネットワークでのファイル転送
telnet リモートログイン
rlogin リモートログイン
slogin セキュアなリモートログイン
rsh リモートシェル
ssh セキュアなリモートシェル

MS-DOSファイル操作

WindowsでフォーマットしたMS-DOS形式のfloppy diskを 使用したい場合は以下のコマンドを使用してください。

コマンド使用法 内容
mdir a: floppy disk上のファイルの一覧
mcopy file.txt a: ファイル"file.txt"のfloppy diskへのコピー
mcopy a:file.txt . floppy disk上のファイル"file.txt"の読み込み
mdel a:file.txt floppy disk上のファイル"file.txt"の消去
mmd a:dir floppy disk上でのディレクトリ"dir"の作成
mcd a:dir ディレクトリ"dir"への移動
mdeltree a:dir ディレクトリ"dir"の消去

コマンドライン編集機能

コマンドライン上で以下のキー操作が可能です。

キー操作 内容
Ctrl-p 以前のコマンドを逆方向に順番に呼び出し
Ctrl-n 以前のコマンドを順方向に順番に呼び出し
Ctrl-b カーソルを左側に移動
Ctrl-f カーソルを右側に移動
Ctrl-a 先頭にカーソルを移動
Ctrl-e 末尾にカーソルを移動
Ctrl-d カーソル上の1文字を削除
Ctrl-k カーソル上から末尾までを削除
Ctrl-y Ctrl-kで削除した部分を貼付け
Ctrl-r 以前のコマンドを逆方向に検索
Ctrl-c 入力したコマンドの取り消し
TABあるいはESC 入力文字の補完および選択

Ctrl-aとはコントロールキー(Ctrl)を押しながら、同時に"a"キーを押すというこ とです。ESCはエスケイプキー(Esc)です。TABはタブキー(Tab)です

パターンマッチ(ワイルドカード)

文字列の一部が一致するファイルを取り出したいときなどに、 以下に示す方法が使用できます。

表記 意味 使用例
表記 一致文字列例
* 0文字以上の任意の文字列 a* a, ab, a1X, ...
? 任意の1文字 a? aa, aB, a1, ...
[文字列] 「文字列」に含まれる文字のどれか1つ [abc]* a1, b23, c4K6, ...
[^文字列] 「文字列」に含まれる文字以外のどれか1つ [abc]? d1, zU, 34, ...
[文字1-文字2] 「文字1」から「文字2」の間に含まれる文字どれか1つ [A-Z]? A1, D3, ZZ, ...
[^文字1-文字2] 「文字1」から「文字2」の間に含まれる文字以外のどれか1つ [A-Z]* A, Dz2, ABC2, ...
{文字列1,文字列2,...} 「文字列1」、「文字列2」、...のいずれか {abc,def}.txt abc.txt, def.txt

また、「~」はホームディレクトリに、 「~USER」はUSERのホームディレクトリに一致します。

バックグラウンド

明示的に終了処理をしなければならないコマンドなどをターミナル(コマンドライン)から実行した場合、実行したコマンド(プロセス)が終了するまで、そのターミナルが使えなくなります。ターミナルも同時に使用したい場合は 次のようにコマンドの後ろに"&"(アンパサンド)をつけてバックグラウン ドで実行します。

$ COMMAND &

リダイレクトとパイプ

ターミナル(コマンドライン)上で実行されるコマンドは、以下の入出力機能を 持っています。

入出力機能 対象 機能
標準入力 一般にキーボード 入力された内容をコマンドに渡す
標準出力 一般に画面 コマンドの実行結果を出力する
標準エラー出力 一般に画面 コマンド実行時のエラーを出力する

デフォルトの入出力対象は上記の通りですが、これを変更することができます。 これをリダイレクトと言います。主なものを下記に示します。

記号 機能
? 標準入力をリダイレクト
? 標準出力を上書きリダイレクト
?? 標準出力を追加リダイレクト
?& 標準出力および標準エラーを上書きリダイレクト

パイプ"|"はコマンドの標準出力や標準エラー出力を 次のコマンドの標準入力へ渡します。

記号 機能
| 標準出力を標準入力へ
|& 標準出力と標準エラー出力を標準入力へ

コマンド連続実行

以下に示す記号で複数のコマンドを区切って記述すれば、 コマンドを連続実行できます。

記号 機能
; 最初のコマンド実行後、次のコマンドを実行
&& 最初のコマンドが正常に実行された場合に、次のコマンドを実行
|| 最初のコマンドが正常に実行されなかった場合に、次のコマンドを実行

サブシェル

コマンドラインでコマンドを実行するときには、 「シェル」というものを介して行っています。コマンドを"()"内に 記述して実行すると、このコマンドは現在のシェルとは別のシェルで実行されます。

コマンド展開

コマンドの引数としてバッククォートで囲まれたコマンドを与えると、 囲まれた部分のコマンドがまず実行されます。 その標準出力へ書き出された内容が囲まれた部分と置き換わり、 元のコマンドへ渡されます。

特殊文字のエスケイプ

これまで示して来たように、コマンドライン上で使用する文字には、 "*"や"?"などの特殊な機能を持った記号があります。 以下の方法でこれらの機能を無視(エスケイプ)して、 そのままコマンドに渡すことができるようにすることができます。

  • 特殊文字の前にバックスラッシュ「\」を付ける。
  • 特殊文字をシングルクォート「'」で囲む。
  • 特殊文字をダブルクォート「"」で囲む。 ただし、「$」ではじまるシェル変数と、バッククォート「`」 はエスケイプされない。

こちらでUnix/Linuxコマンドの使い方を練習してみましょう。