本ページには広告・プロモーションが含まれています。

基本的な UNIX コマンドとシェルの解説です。 UNIX の入門者を対象としており、コマンドラインインターフェイス(CUI)でのファイル操作などを学ぶことができます。


ディレクトリ

UNIX はディレクトリの区切り(パスの表記)にスラッシュ"/"を使う。

/              ルート ディレクトリ("root" directory)
/usr           usr という名前のディレクトリ(ルート ディレクトリのサブ ディレクトリ)
/usr/STRIM100  STRIM100 は /usr のサブディレクトリ

ファイルシステムの移動

ファイルシステム内(ディレクトリ)を移動する方法。

pwd               現在作業中あるいは今居るディレクトリの表示
cd                ホーム ディレクトリへ移動
cd /usr/STRIM100  /usr/STRIM100 ディレクトリへ移動
cd INIT           今居るディレクトリのサブディレクトリである INIT ディレクトリに移動
cd ..             親ディレクトリへ移動
cd $STRMWORK      環境変数 'STRMWORK' で定義されたディレクトリへ移動
cd ~bob           bob ユーザーのホームディレクトリへ移動(権限が無ければ移動できない)

ディレクトリの内容を見る

ls コマンド。

ls       ディレクトリの内容を一覧表示
ls -l    詳細情報付きで内容を一覧表示

   例:
$ ls -l
drwxr-xr-x    4 cliff    user        1024 Jun 18 09:40 WAITRON_EARNINGS
-rw-r--r--    1 cliff    user      767392 Jun  6 14:28 scanlib.tar.gz
^ ^  ^  ^     ^   ^       ^           ^      ^    ^      ^
| |  |  |     |   |       |           |      |    |      |
| |  |  |     | オーナー   グループ       サイズ   日付  時刻    名前
| |  |  |     ファイルへのリンク数またはディレクトリに含まれる内容物の数
| |  |  permissions for world
| |  グループの権限
| ファイルオーナーの権限: r = 読む, w = 書く, x = 実行 - = 権限なし
ファイルの種類: - = ノーマルファイル, d=ディレクトリ, l = シンボリックリンク, 他にもある...

ls -a        隠しファイルを含む一覧。隠しファイルは "." で始まる
ls -ld *     ファイルとディレクトリ名を詳細情報付きで全て表示。
             "d" オプションが無ければサブディレクトリの内容まで表示する。
             "d" オプションを付ければディレクトリがひとつのファイルであるかのように表示される。

ファイルの移動、リネーム、コピー

ファイルの複製と場所の移動と名前の変更。

cp file1 file2          ファイルのコピー
mv file1 newname        ファイルの移動またはリネーム
mv file1 ~/AAA/         file1 を ホームディレクトリにあるサブディレクトリ AAA に移動する
rm file1 [file2 ...]    ファイルの削除
rm -r dir1 [dir2...]    ディレクトリの中身を再帰的に削除
mkdir dir1 [dir2...]    ディレクトリをさくせい する
mkdir -p dirpath        パスに含まれるディレクトリを全て作成する
rmdir dir1 [dir2...]    空のディレクトリを削除する

ファイルの閲覧と編集

ファイルの中身を見る。内容を編集する。

cat filename      ファイルの内容をスクリーンに打ち出す
more filename     ファイルの内容をスクリーンに順次に打ち出す:
                  ENTER = 一行進める, スペースバー = 1ページ進む,  q = 終了
less filename     more 似にているがページを巻き戻すことができる
vi filename       vi エディタでファイルを編集する
emacs filename    emacs エディタでファイルを編集する
head filename     ファイルの先頭の数行を見る
head -n  filename ファイルの先頭 n 行を見る
tail filename     ファイルの後方の数行を見る
tail -n filename  ファイルの後方 n 行を見る

シェル

コマンドライン インターフェースの作用は、使用するシェルプログラムによってわずかに異なります。 各々のシェル独自の追加機能にはとても素晴しいものがあります。

自分が使っているシェルを確かめるには次のようなコマンドを打ち込んでください:

echo $SHELL

シェルの命令を記述したファイルを作ることによって、タスクを実行することが可能です。 これをシェルスクリプトと言います。大部分のシェルがこのシェルスクリプトを目的としています。

環境変数

シェルに環境変数を設定することで、シェルがより便利になります。

例えば bash シェルの場合

export CASROOT=/usr/local/CAS3.0               /usr/local/CAS3.0 という値を持つ CASROOT という変数を定義する
export LD_LIBRARY_PATH=$CASROOT/Linux/lib      変数 CASROOT に /Linux/lib という値を追記して LD_LIBRARY_PATH を定義します。実際の値は /usr/local/CAS3.0/Linux/lib になります。

変数名の接頭辞として $ を用いることで、コマンドに評価させることができます。

cd $CASROOT         作業ディレクトリを変数 CASROOT の値であるディレクトリに変更する
echo $CASROOT       CASROOT の値を表示する
printenv CASROOT    bash やいくつかのシェルで機能する、上記コマンドのもうひとつの方法

対話型の履歴

bash と tcsh には上矢印キーを使うことで直前に実行したコマンドを表示する機能があります。コマンドを編集して再度実行することも可能です。

ファイル名の補完

bash と tcsh にはファイル名の一部を入力してからタブキーを押下することでファイル名を補完する機能があります。例えば constantine-monks-and-willy-wonka.txt というファイルを編集したい場合、'vi const' とタイプしたあとにタブキーを押下すると残りのファイル名を埋めてくれるのです。

Bash は優秀なシェル

Bash はコマンドや環境変数の補完機能に優れています。タブキーを2回押下すると補完の候補を全て表示してくれます。ほとんどの Linux システムが Bash をユーザーの標準シェルとしています。

リダイレクト

リダイレクト(リダイレクションとも言う)とはコマンドの入力先、出力先を変更できる機能です。

grep string filename > newfile           grep コマンドの出力結果を 'newfile' ファイルに書き出す。
grep string filename >> existfile        grep コマンドの出力結果を 'existfile' ファイルに追記する。

ほとんどのコマンドでリダイレクション命令 > あるいは >> を使えば出力結果を直接ファイルへ出力することができます。

パイプ

パイプを示す記号 "|" を使うとコマンドの出力結果を他のコマンドの入力として使うことができます。

ls -l | more
  "ls -l" の結果を "more" コマンドに送ります。
  とても長いディレクトリの一覧をページ単位で見ることが可能になります。

du -sc * | sort -n | tail
  "du -sc *" コマンドはファイルとディレクトリのサイズを表示します。
  パイプを通して "sort -n" コマンドを実行し、サイズが小さい順に並び替えます。
  さらに "tail" コマンドを使って最後の数行を表示します。

コマンドの置換

あるコマンドの入力を他のコマンドから受け取る方法にコマンド置換という方法があります。 コマンド置換にはバッククォートを用います。

cat `find . -name aaa.txt`

aaa.txt というファイルを検索して cat コマンドでファイルの内容を表示します。

ファイルの文字列検索: grep コマンド

ファイル中の文字列を検索する grep コマンド。

grep string filename    string を含むすべての行を表示します。

ファイルの検索: find コマンド

ファイルを検索する find コマンド。

find 検索パス -name ファイル名

find . -name aaa.txt
    aaa.txt という名前のファイルをカレントディレクトリとすべてのサブディレクトリから検索します。
find / -name vimrc
    'vimrc' という名のファイルをシステム全体から探し出します。
find /usr/local/games -name "*xpilot*"
    ファイル名の一部に 'xpilot' という名を含むファイルを '/usr/local/games' ディレクトリから検索します。

アーカイブの読み書き: tar コマンド

tar コマンドは "tape archive" を意味します。tar コマンドはアーカイブ(ファイルとディレクトリツリーのコレクション)を読み書きする標準的な方法です。

tar コマンドで作成されたアーカイブファイルは stuff.tar というファイル名になります。 しばしば stuff.tar.gz という名のファイルを見かけると思いますが、これは tar で作成されたアーカイブを gzip コマンドで圧縮したファイルのことです。

おそらく、誰かがあなたにUNIXシステムで書かれたテープを与えるならば、それは tar フォーマットのはずです。そして、あなたはそのテープを読むために tar コマンドを使います(もちろんテープドライブも必要です)。

同様に、あなたが他の誰かに渡すテープを書きたいならば、多分に tar を使わなければならないでしょう。

tar xv      デフォルトのテープドライブからファイルを展開する。スクリーンにファイル名を表示します。
tar tv      デフォルトのテープドライブからファイルの一覧を表示する。アーカイブの展開はしません。
tar cv file1 file2
            file1 と file2 をデフォルトのテープドライブに書き込む。
tar cvf archive.tar file1 [file2...]
            file1, file2など を含む archive.tar アーカイブファイルを作成する。
tar xvf archive.tar  アーカイブファイルを展開する。
tar cvfz archive.tar.gz dname
            dname ディレクトリの全ファイルを含む gzip 圧縮されたアーカイブファイルを作成する。tar コマンドすべてのバージョンで機能しません。
tar xvfz archive.tar.gz
            gzip 圧縮されたアーカイブファイルを展開する。tar コマンドすべてのバージョンで機能しません。
tar cvfI archive.tar.bz2 dname
            dname ディレクトリの全ファイルを含む bzip2 圧縮されたアーカイブファイルを作成する。tar コマンドすべてのバージョンで機能しません。

ファイルの圧縮: compress, gzip, bzip2 コマンド

UNIX の標準的な圧縮コマンドは compress と uncompress です。 圧縮ファイル名の接尾辞(拡張子)は .Z です。

compress part.igs   圧縮ファイル part.igs.Z を作成する。
uncompress part.igs  圧縮されたファイル part.igs.Z を展開する。.Z を指定しなくても大丈夫です。

もうひとつの圧縮ツールに gzip と gunzip があります。これらは GNU の圧縮/展開コマンドです。 gzip は compress よりも圧縮効率が良いですが、全てのシステムにインストールされているとは限りません。 gzip を使って圧縮されたファイルの拡張子は .gz です。

gzip part.igs       圧縮ファイル part.igs.gz を作成する。
gunzip part.igs     圧縮されたファイル part.igs.gz を展開する。

bzip2 コマンドは gzip よりもさらに高い圧縮率を誇ります。ただし圧縮/展開に長い時間を要します。 gzip ほど一般的ではありませんが普及しているコマンドです。

bzip2 part.igs          圧縮ファイル part.igs.bz2 を作成する。
bunzip2 part.igs.bz2    圧縮されたファイル part.igs.bz2 を展開する。

ヘルプファイル: man, apropos コマンド

ほとんどのコマンドにマニュアルページが用意されています。詳細が少なかったり多かったり、暗号のようで理解できない使い方が記載されていることもありますが、有用なドキュメントであるのは間違いありません。Some say they are called man pages because they are only for real men.

man ls      ls コマンドのマニュアルページを表示する。

apropos コマンドで mna ページを検索することができます。

apropos build     "build" という語を含む man ページの一覧が説明文付きで表示される。

apropos コマンドのヘルプは man apropos で見ましょう。

vi エディタの基本

ファイルを開く

vi filename

テキストの入力

エディットモード: 下記のキーを押すとエディットモードに切り替わり、テキストを入力することができます。

i     カーソルの前に挿入
I     行頭に挿入
a     カーソルの後ろに挿入
A     行末に挿入
r     1文字置換
R     置換モード
<ESC> 挿入または上書き(エディットモード)を終了する

テキストの削除

x     一文字消す
dd    現在の行を削除してバッファに置く
ndd   n 行消して、バッファに置く
J     次の行を現在の行末に付ける(改行の削除)。

失敗したときは

u     最後のコマンドをアンドゥ

カット アンド ペースト

yy    現在の行をコピーする(バッファに置く)
nyy   n 行コピーする(バッファに置く)
p     バッファのコンテンツを行末に置く
P     バッファのコンテンツを行頭に置く

カーソルの移動

^d    ページダウン
^u    ページアップ
:n    n 行にジャンプする
:$    ファイルの末尾にジャンプする
^g    現在の行番号を表示する
h,j,k,l 左,下,上,右に移動。キーボードマッピングが一般的なら矢印キーも使えます。

文字列の置換

:n1,n2:s/string1/string2/[g]       n1 行から n2 行までの文字列 string1 を string2 に置換する。
                                   g を付けると、行でマッチしたすべての文字列を置換します。
                                   g を付けなければ、行で最初にマッチ文字列だけを置換します。

    ^ 行頭に一致
    . 任意の1文字に一致
    $ 行末に一致

上記3つの文字(^.$)と スラッシュ記号のような "スペシャル キャラクター" は \ (バックスラッシュ) で エスケープ することができます。

例: "/usr/STRIM100/SOFT" を一致させたいときは "\/usr\/STRIM100\/SOFT" のように書きます。

置換の例

:1,$:s/dog/cat/g                   1行目から $ (ファイルの終わり)まで全ての 'dog' を 'cat' に置換します。

:23,25:/frog/bird/                 23行目から25行名までの 'frog' を 'bird' に置換します。
                                   ただし行で最初にマッチした 'frog' だけが 'bird' に置換されます。

保存と終了、その他の ex コマンド

保存や終了のコマンドは、接頭辞としてコロン(:) を押します。そしてウインドウの左下にコマンドを入力していきます。 これら、コロンで実行するものを ex コマンドと呼びます。なぜならこれらは ex テキストエディタのコマンドだからです。エディットモードでは ex コマンドが使えません。<ESC> を押してエディットモードを終了する必要があります。

:w                現在のファイルに保存する。
:w new.file       'new.file' という名前のファイルに保存する。
:w! existing.file 編集中の既存のファイルに上書き保存する。
:wq               保存して終了。
:q                終了。
:q!               変更を保存せずに終了。

:e filename       ファイル 'filename' を開く。

:set number       行番号を表示する。
:set nonumber     行番号を表示しない。

FAQs

The USENET FAQs should be the first place you look for an answer to specific questions. You can find most of them at RTFM The contents of this directory includes vi, bash, and comp.unix.questions FAQs. Searching USENET archives are very useful too. google.com has a USENET archive (formerly Deja.com's) . Advanced Group Search rules.


このドキュメントは、Vim を使用してプレーンテキストから変換されました。 Vim は最高のテキストエディタです。


Copyright (c) 2000-2006 freeengineer.org

この文書は Learn UNIX in 10 minutes の日本語訳です。テキストは GNU Free Documentation License の下で利用可能です。


最終更新日: 2014年05月07日(水) / カテゴリー: Unix, Linux