コマンド概要

コマンド概要 man コマンド セクションについて
ディレクトリの移動とファイルリスト ディレクトリの移動:pwd,cd
ファイルを見る、編集するコマンド ファイルを見る:cat,head,tail ファイルを編集する:file,vi
便利なコマンド プロセス関連:ps,top,kill 検索:find,grep 複数のファイルをまとめる:tar
その他のコマンド cut diff env file find ftp
id ipcs kill ksh ls mkdir
mv ping rm stty ulimit umask
csh の組み込みコマンド:alias/limit/rehash/setenv/source
その他 FAQ 練習問題


コマンド概要

man コマンド

UNIX のコマンドは、man で表示させると以下のように、コマンドである "(1)" が表示されます。

% man man
ユーザーコマンド                                           man(1)

【名前】
     man - マニュアルページの表示

【形式】
     man  [ - ]  [ -adFlrt ]  [ -M path ]  [  -T macro-package  ]
     [ -s section ] name ...

     man  [ -M path ] -k keyword ...

     man  [ -M path ] -f file ...

セクションについて

(1) をセクション番号といいます。 セクション番号とその内容の関係は、以下のとおりです。

セクション 内          容
1 ユーザコマンドの説明
1M 管理コマンドおよびアプリケーションプログラムの序章
2 システムコールについての概説とエラー番号の説明
3 関数およびライブラリの序章
3B 関数およびライブラリの序章(BSD 関数とのソース互換性ライブラリ)
3C 標準 C ライブラリ libc で libc.so(libc.a) に実装されています。
3E ELF (Extensible Linking Formats) アクセスライブラリ libelf です。 このライブラリは、elf ファイル (実行可能ファイル、 オブジェクトファイル、共有オブジェクトファイル) の作成および解析を行うためのインタフェースを提供しています。
3G libgen という文字列パターンマッチングおよびパス名操作ライブラリです。 libgen.a が実装されています。
3K カーネルの仮想記憶ライブラリへアクセスすることができ、 共有オブジェクトとしては libkvm.so が、 アーカイブとしては libkvm.a が実装されています。
3M 数学ライブラリ libm です。 このライブラリは共有オブジェクトとしては libm.so が、 アーカイブとしては libm.a が実装されています。
3N ネットワークサービスライブラリ libnsl です。 このライブラリは共有オブジェクトとしては libnsl.so が、 アーカイブとしては libnsl.a が実装されています。
3R POSIX.4 リアルタイムライブラリの libposix4 です。 このライブラリは共有オブジェクトとしては libposix4.so だけが実装されています。
3S 標準 I/O パッケージです (stdio(3S) を参照 ) 。 標準 C ライブラリ libc を使って、コンパイルされ、 C コンパイラシステムによって自動的にリンクされます。
3T スレッドライブラリ libpthread と libthread を構成します。 これらのライブラリは、 マルチスレッドのアプリケーションを作成するために使われます。
3X 特殊ライブラリ。libadm/libbsdmalloc/libcrypt/libcurses/libdl/libform/libmail/libmalloc/libmapmalloc/libmenu/libpanel
3XC /usr/xpg4/lib/libcurses.so.1 にある X/Open Curses ライブラリです。
4 ファイル・フォーマットの概要
5 ヘッダー (*.h)、環境、マクロ
7 デバイス特殊ファイルの概要
7D システム提供のドライバ
7FS SunOS でサポートしているファイルシステム
7I ドライバとそのサブシステムでの ioctl() に関する概要
7M STREAMSmodules 概要
7P ネットワークプロトコル概要
9 デバイスドライバインターフェース概要

これらの情報は "man -sN intro" コマンドで取得しました (N=1〜9)。

しかし中にはコマンドとライブラリコールが同じ名前のものもあります。 そのような場合は、-s で該当するセクション番号を指定します。 セクションを指定しない場合は、はじめに該当する名前のマニュアルが表示されます。

% man sleep
ユーザーコマンド                                         sleep(1)

【名前】
     sleep - 実行の一定期間保留

【形式】
     sleep time

【機能説明】
     sleep  ユーティリティは、少なくとも time 秒間、実行を停止します。

% man -s3c sleep
C Library Functions                                     sleep(3C)

名前
     sleep - suspend execution for an interval of time

形式
     #include 

     unsigned int sleep(unsigned int seconds);

コマンドの使い方などは、必ず man で確認しましょう。




ディレクトリの移動とファイルのリスト

ディレクトリの移動:pwd,cd

UNIX にはディレクトリがあります。 これは Windows におけるフォルダと同じもので、 階層構造になっており各ファイルはいずれかのディレクトリ上にあります。

最上位のディレクトリを / (root)で表現し、 全てのディレクトリとファイルは / より下の階層にあります。

UNIX にはたくさんの設定ファイルがありますが、 それらのファイルは特定のディレクトリにまとめて置かれています。 (/etc など)

コマンド pwd (Print name of current Working Directory)は / を基準に現在自分がいるディレクトリを表示します。
現在いるディレクトリのことを カレントディレクトリ (ワーキングディレクトリ)と呼び、 ログインしたときのディレクトリをホームディレクトリと呼びます。

817ozzy-13 3:58pm] pwd
/home13/pro817

ディレクトリは階層構造になっていますが、 各ディレクトリは / (スラッシュ)で区切って表示します。 この例ではカレントディレクトリは / の下の home13 というディレクトリの下の pro817 であることを表しています。

画面に表示されている 817ozzy-13 3:58pm] の部分をプロンプトと呼びます。 この場合 ] の中の先頭の 817 はログインしているユーザ名の一部を表し、 次の ozzy はこのコンピュータにつけられている名前を表しています。 13 はヒストリの13番目を表しています。 最後の 3:58pm は現在の時刻を表しています。

ディレクトリを移動するには cd (change directory)コマンドを使います。 コマンド cd の後に移動先のディレクトリを指定することで、 カレントディレクトリを変更できます。

cd コマンドに移動先のディレクトリを指定しないと、 ホームディレクトリに移動します。

ディレクトリの表現で特に .. は親のディレクトリ(1 つ上の階層のディレクトリ)を表し、 . はカレントディレクトリを表します。
ディレクトリの表現は、 ルートディレクトリからの位置を表す絶対ディレクトリ表現と、 カレントディレクトリからの位置を表す相対ディレクトリ表現があります。

817ozzy-35 11:15am] cd ~ora817
/home12/ora817

~ は指定したアカウントのホームディレクトリを指します。 従って上記コマンドの結果は、ora817 のホームディレクトリに移動します。

ファイルのリスト:ls

ls コマンドで、 カレントディレクトリにあるディレクトリとファイルの一覧を表示します。

817ozzy-13 1:53pm] ls

これはカレントディレクトリにディレクトリやファイルが存在しないことを表します。 ここで次のように -a というオプションをつけて実行してみましょう。

817ozzy-14 1:53pm] ls -a
.           ..          .aliasall   .cshall     .lsof_ozzy

この場合 . (ピリオド)から始まっているディレクトリやファイルも表示されます。 この . (ピリオド)から始まるディレクトリやファイルは隠しファイルで、 通常は表示されません。 これらは主に各ユーザ毎の設定を記述したファイルです。

さらに l というオプションをつけると次のように表示されます。

817ozzy-15 1:53pm] ls -al
合計 70
drwxr-xr-x   2 root     other        512  9月  9日 2004年 .
drwxr-xr-x  18 root     other        512  7月 11日 2002年 ..
-rw-r--r--   1 root     other       3161  6月  3日 2004年 .aliasall
-rw-r--r--   1 root     other       6003  8月  5日 2003年 .cshall
-rw-r--r--   1 root     other      23448  9月  9日 2004年 .lsof_ozzy

各ディレクトリまたはファイルの先頭にある情報は次のとおりです。

  1. ディレクトリまたはファイルのアクセス権限

    1文字目 -: ファイルを表す
    d: ディレクトリを表す
    l: シンボリックリンクを表す
    2-4文字目 所有者(owner)のアクセス権を表す
    r: 読み込み可
    w: 書き込み可
    x: 実行可(ディレクトリの場合は探索可)
    -: 権限なし
    5-7文字目 グループ(group)のアクセス権を表す
    r: 読み込み可
    w: 書き込み可
    x: 実行可(ディレクトリの場合は探索可)
    -: 権限なし
    8-10文字目 その他のユーザ(other)のアクセス権を表す
    r: 読み込み可
    w: 書き込み可
    x: 実行可(ディレクトリの場合は探索可)
    -: 権限なし

    これによってファイル毎に利用できるユーザが制限されています。

  2. リンク数
    あまり意識する必要はありません。

  3. 所有するユーザ名
    先程のアクセス権限はこの所有者に対して設定されています。

  4. アクセスが許可されたグループ名
    先程のアクセス権限はこのグループに対 して設定されています。

  5. サイズ
    ファイルの大きさをバイト単位で表します。

  6. 日付
    ファイルが作成または更新された日時です。

  7. ファイル名

アクセス権を変更するコマンドに chmod があります。 このコマンドについては、 パーミッションの項を参照してください。




ファイルを見る、編集するコマンド

ファイルを見る:cat,head,tail

ファイルを見るコマンドは cat(concatenate files and print on the standard output)です。
ホームディレクトリにある ".cshrc" というファイルの中身を表示してみましょう。

# .cshrc
umask 002
set path=(. /bin /sbin /usr/sbin /usr/bin /usr/ccs/bin  /usr/ucb)
set filec

setenv LANG                             ja
setenv EDITOR                   vi
#setenv EXINIT                   "source $HOME/.exrc"
setenv TERM vt100

# man
setenv MANPATH /usr/share/man:/usr/openwin/man:/usr/dt/man:/usr/local/man
#setenv PAGER /usr/local/bin/less

# Common Desktop Environment (or X Windows)
setenv LD_LIBRARY_PATH  /usr/dt/lib:/usr/ucb/lib
setenv OPENWINHOME              /usr/openwin
set path = ( $OPENWINHOME/bin $path )

# WorkShop C Compiler 4.2
setenv MANPATH                  /opt/SUNWspro/man:/usr/man:$MANPATH
setenv LD_LIBRARY_PATH  /opt/SUNWspro/lib:$OPENWINHOME/lib:$LD_LIBRARY_PATH
set path = (/opt/SUNWspro/bin $path)

# Oracle8 Enterprise Edition Release 8.1.7.x
setenv ORACLE_BASE              $HOME/app/oracle
setenv ORACLE_HOME              $HOME/app/oracle/product/8.1.7
setenv ORACLE_TERM              386x
setenv ORACLE_SID               pro817
setenv ORA_NLS33                $ORACLE_HOME/ocommon/nls/admin/data

setenv NLS_LANG                 Japanese_Japan.JA16EUC
setenv TNS_ADMIN                $ORACLE_HOME/network/admin
setenv EPC_DISABLED             TRUE
setenv TMPDIR                   /tmp
setenv LD_LIBRARY_PATH          $ORACLE_HOME/lib:$LD_LIBRARY_PATH
setenv CLASSPATH                .:$ORACLE_HOME/jdbc/lib/classes111.zip:$ORACLE_HOME/jdbc/lib/nls_charset11.zip
setenv DISPLAY                  masara:0.0
set path = ( $ORACLE_HOME/bin $path )

#setenv NLS_DATE_FORMAT         'YYYY/MM/DD HH24:MI:SS'

# Java Development Kit 1.1.x
setenv JAVA_HOME                /usr/java
setenv CLASSPATH                .:$JAVA_HOME/lib/classes.zip:$CLASSPATH
set path = ( $JAVA_HOME/bin $path )

# GNU and Free soft
set path = ( $path /usr/local/bin /opt/gnu/bin )
setenv MANPATH /usr/local/man:/opt/gnu/man:$MANPATH

#aliases
alias ob          "cd $ORACLE_BASE"
alias oh          "cd $ORACLE_HOME"
alias tns         "cd $TNS_ADMIN"
alias bdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/bdump"
alias udump       "cd $ORACLE_BASE/admin/$ORACLE_SID/udump"
alias cdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/cdump"
alias pfile       "cd $ORACLE_BASE/admin/$ORACLE_SID/pfile"
alias ls          "ls -aF"

# Sun COBOL
set    path = ( /opt/SUNWnsun/bin $path )
setenv MANPATH  /opt/SUNWnsun/man:${MANPATH}
setenv LD_LIBRARY_PATH   /opt/SUNWnsun/lib:${LD_LIBRARY_PATH}
setenv NLSPATH /opt/SUNWnsun/lib/nls/%l/%c/%N.cat:/opt/SUNWnsun/lib/nls/C/%N.cat
setenv PSTAFF       /opt/SUNWnsun/config/mkinc

以下は .login です。

stty erase ^H
set history=64
set prompt="`hostname`{`whoami`:\!}% "

次にファイルの先頭を表示するコマンドが head です。
標準では先頭から 10 行を表示しますが、 オプションを指定すると任意の行までを表示できます。

817ozzy-2 8:58am] head .cshrc
# .cshrc
umask 002

set path=(. /bin /sbin /usr/sbin /usr/bin /usr/ccs/bin  /usr/ucb)
set filec

setenv LANG                             ja
setenv EDITOR                   vi
#setenv EXINIT                   "source $HOME/.exrc"
setenv TERM vt100

反対にファイルの終りを表示するコマンドが tail です。
head と同様に標準で終りの 10 行を表示し、 オプションを指定すると行数を変更できます。

817ozzy-20 2:03pm] tail -12 .cshrc
alias bdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/bdump"
alias udump       "cd $ORACLE_BASE/admin/$ORACLE_SID/udump"
alias cdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/cdump"
alias pfile       "cd $ORACLE_BASE/admin/$ORACLE_SID/pfile"
alias ls          "ls -aF"

# Sun COBOL
set    path = ( /opt/SUNWnsun/bin $path )
setenv MANPATH  /opt/SUNWnsun/man:${MANPATH}
setenv LD_LIBRARY_PATH   /opt/SUNWnsun/lib:${LD_LIBRARY_PATH}
setenv NLSPATH /opt/SUNWnsun/lib/nls/%l/%c/%N.cat:/opt/SUNWnsun/lib/nls/C/%N.cat
setenv PSTAFF       /opt/SUNWnsun/config/mkinc

ここまでに紹介したコマンドはファイルの中身全てを一度に表示しました。 しかし大きなファイルは、 これらのコマンドではターミナル上に表示できる行しか確認できません。 そこで大きなファイルを表示するために less (opposite of more)というコマンドを使います。 始めは、大きなファイルがありませんのでファイルを作成します。

まずディレクトリ "/etc" の詳細なリストを表示してみましょう。

  ls -l /etc  
とコマンドを入力します。 すると表示はウィンドウにはいりきりません。 そこで次のようにすることで、リストを見ることができます。

817ozzy-42 2:11pm] ls -l /etc >list.txt
817ozzy-43 2:11pm] ls
list.txt
817ozzy-43 2:11pm] ls -l /etc | less

ls -l /etc > list.txt 
は ls コマンドの結果(表示)を "list.txt" というファイルに出力するという意味になります。 この >リダイレクト といい、よく使います。
既に同じ名前のファイルがある場合は、 前のデータが消えてしまいますので注意が必要です。

ls コマンドでカレントディレクトリのリストを表示します。 "list.txt" というファイルが存在することを確認しています。
最後の less というコマンドで list.txt の中身を表示します。次のような操作ができます

キー 操作
[space] 次の 1 ページを表示
b 前の 1 ページを表示
次の 1 行を表示
前の 1 行を表示
/ 文字列検索
検索したい文字列を入力して [Enter] キ ーを押すと該当する場所を表示
q less コマンドの終了

この |パイプと呼ばれ、 コマンドの結果を別のコマンドへの入力とします。 ここでは、 /etc ディレクトリのリストの結果を less コマンドに渡し、 1 ページ毎表示します。

ファイルを編集するコマンド:file,vi

ファイル形式

ファイルの中身を見るコマンドを説明しましたが、 このコマンドで全てのファイルの中身を確認することはできません。

ファイルには大きく分けてテキストファイルバイナリファイルの 2つの種類があります。

テキストファイルは、 その内容が英数字や日本語などの人が見て内容が理解できる形式で記述されていて、 アスキー形式のファイルなどともいいます。

一方バイナリファイルは、 プログラムやプログラムに依存した形式で記述されているファイルで、 人間が直接理解できない形式で記述されています。 ここで紹介したコマンドで中身を確認できるのはテキストファイルのみです。 バイナリ形式のファイルを表示しようとすると、 表示がこわれますので注意しましょう。 (バイナリ形式のファイルを閲覧するようなプログラムもあります。)

ファイルの形式を確認するには file コマンドを使います。

817ozzy-48 2:18pm] file .cshrc
.cshrc:         c program text
817ozzy-49 2:18pm] file Support
Support:        directory

内容が分からないファイルは file コマンドで形式を確認してから表示しましょう。

エディタ

ファイルを作成したり、 内容を変更するためのプログラムをエディタと言います。

エディタの種類 UNIX には様々なエディタがありますが最も多く利用されているエディタは viemacs (mule、xemacs も含む)です。
emacs は Windows のメモ帳やワードパッドなどのような使い勝手で、 たくさんの機能があります。 一方 vi は最も標準的なエディタで、 emacs よりも動作が軽いです。 始めはキー操作などを覚える必要がありますが手軽に使えるエディタです。
ここでは vi の使い方について説明します。

vi
vi の起動方法は、次のとおりです。
vi file_name 

前節で作成した "list.txt" と言うファイルを編集してみましょう。 vi の基本的な操作方法は次のとおりです。

817ozzy-10 9:31am] ls
list.txt
817ozzy-10 9:31am] vi list.txt

キー 操作
↑、↓、→、← 各方向に 1 つ移動
i カーソルのある場所に挿入
インサートモードになり、文\ 字を入力できる。
終了は [Esc] キー
a カーソルのある次の場所に挿入
インサートモードになり 、文字を入力できる。
終了は [Esc] キー
x カーソルのある場所の1文字削除
r カーソルのある場所の1文字置き換え
h カーソルを 1 文字左へ移動
l カーソルを 1 文字右へ移動
j カーソルを次の行に移動
k カーソルを前の行に
/ 文字列検索
u 操作の取消
: コロンモード - 画面下に ":"(コロン) が表示され次の ex コマンドが実行できます。
q! - ファイルの終了(変更をファイルには書き出さない)
wq - ファイルの終了(変更をファイルには書き出す)




便利なコマンド

便利なコマンドを説明します。

プロセス関連:ps,top,kill

UNIX 上では同時に複数のプログラムが動いて複数の処理を実行しています。 その個々の処理をプロセス と呼びます(厳密にはプログラムと同じ意味ではありません)。 このプロセスを表示するコマンドが ps です。

817ozzy-19 9:42am] ps
   PID TTY      TIME CMD
  7831 pts/11   0:00 tcsh
  7823 pts/11   0:00 csh
817ozzy-20 9:42am] ps -f
     UID   PID  PPID  C    STIME TTY      TIME CMD
  pro817  7831  7823  0 09:29:47 pts/11   0:00 tcsh
  pro817  7823  7821  0 09:29:36 pts/11   0:00 -csh

ps コマンドは、 コマンドを実行したターミナル上でユーザ権限を持って実行中のプロセスを表示します。 また f オプションをつけることでプロセスの詳細情報を表示できます。

主なオプションは次のとおりです。

オプション 機能
-e 他のユーザが権限を持つプロセスも表示
-f プロセスの詳細な情報を表示

この他にプロセスを表示するコマンドに top があります。 これは各プ ロセスを CPU の負荷が大きい順や、 メモリの消費が大きい順などで表示します。 表示の変更については h キーで操作方法が表示されますので参考にして下さい。 q キーを押すとコマンドが終了します。

プロセスを正しい手順で実行・終了することでプロセスは消えますが、 正常に終了できなかった場合などは直接プロセスを終了させる必要があります。 そのためのコマンドが killです。 このコマンドは、後ろにプロセスID(PID:process identifier) を指定して実行します。

  kill PID 
プロセス ID は ps コマンドや top コマンドでプロセスを表示したときに PID という欄に表示される値です。 ps コマンドおよび top コマンドでは一番左の値になります。 当然ですがログインしたユーザが所有しているプロセスに対してのみ実行可能です。

検索:find,grep,egrep

ファイルがどこにあるかを検索するには find コマンドを使います。 コマンドで指定したディレクトリ以下の該当ファイルを検索できます。

 find directory expression 
例えば /usr ディレクトリ以下の man というファイル(コマンド)を検索するには次のようにします。

817ozzy-5 9:48am] find /usr -name man
find: ディレクトリ /usr/lost+found を読み取れません: アクセス権がありません。
/usr/share/man
/usr/bin/man
/usr/dt/share/man
/usr/dt/man
/usr/openwin/share/man
/usr/openwin/man
/usr/demo/SOUND/man
/usr/demo/link_audit/man
/usr/SUNWale/man
/usr/SUNWale/share/man
find: ディレクトリ /usr/aset を読み取れません: アクセス権がありません。
/usr/man
/usr/java1.2/man
/usr/local/lib/perl5/5.00503/man
/usr/local/man
/usr/local/apache/man
/usr/j2sdk1.4.1_04/man
/usr/j2sdk1_3_1_01/man

それに対してファイル内の文字列を検索するには grep コマンドを使います。

  grep strings file_name  
grep コマンドは検索対象文字列が存在する行を全て表示します。 ホームディレクトリの ". cshrc" というファイル中の "ORACLE_SID" という文字列を検索するには次のようにします。 最初に cat コマンドでファイルを全て表示して内容を比べてみて下さい。

817ozzy-13 10:02am] grep ORACLE_SID .cshrc
setenv ORACLE_SID               pro817
alias bdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/bdump"
alias udump       "cd $ORACLE_BASE/admin/$ORACLE_SID/udump"
alias cdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/cdump"
alias pfile       "cd $ORACLE_BASE/admin/$ORACLE_SID/pfile"

また次のようにすると、 カレントディレクトリ中の全てのファイルに対して文字列のを検索ができます。 次の例ではカレントディレクトリの . (ピリオド)で始まる全てのファイルに対して ORACLE_SID という文字列を検索します。 結果は文字列を含むファイル名の後に該当する行が表示されます。

817ozzy-15 10:03am] grep ORACLE_SID .*
.cshrc:setenv ORACLE_SID               pro817
.cshrc:alias bdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/bdump"
.cshrc:alias udump       "cd $ORACLE_BASE/admin/$ORACLE_SID/udump"
.cshrc:alias cdump       "cd $ORACLE_BASE/admin/$ORACLE_SID/cdump"
.cshrc:alias pfile       "cd $ORACLE_BASE/admin/$ORACLE_SID/pfile"

grep の代わりに egrep を使うと検索対象文字列に完全正規表現を利用できます。

これらの検索コマンドを使うと、 設定ファイルの場所や設定が記述してあるファイルなどを探すことができます。

複数のファイルをまとめる:tar

UNIX では複数のファイルをまとめたファイルのことを、 アーカイブ・ファイルといいます。 tar コマンドは、複数のファイルをまとめてアーカイブ・ファイルを作ったり、 アーカイブ・ファイルからメンバのファイルをとりだしたりできます。

tar cvf java.tar java     java ディレクトリ以下の全ファイルをアーカイブします
tar xvf java.tar          java.tar を解凍します




その他のコマンド

cut

ファイルの各行の指定フィールドを切り出します。

% uname -r
5.8
% uname -r | cut -f1,1 -d'.'
5

diff

2つのファイルの差分を調べます。

< は1番目のファイルの差分を示します。
> は2番目のファイルの差分を示します。
a は増分を示します。
c は変更を示します。
d は削除を示します。

% diff proc1.pc proc11.pc 
36a37
> #define DATA_NAME     "oracle"
47a49,51
> char *sales_SQL = "SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE 'SALES%'";
> char *clerk_SQL = "SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE 'CLERK%'";
>
50a55
>    char     db_name[PWD_LEN];
55,58d59
< EXEC SQL DECLARE salespeople CURSOR FOR
<      SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE 'SALES%';
< EXEC SQL DECLARE clerkpeople CURSOR FOR
<      SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE 'CLERK%';
90a92
>    strcpy(db_name , DATA_NAME);
94c96
<    EXEC SQL CONNECT :username IDENTIFIED BY :password;
---
>    EXEC SQL CONNECT :username IDENTIFIED BY :password AT :db_name;
104a107,109
>    EXEC SQL AT :db_name DECLARE SEL_SALES_SQL1 STATEMENT;
>    EXEC SQL PREPARE SEL_SALES_SQL1 FROM :sales_SQL;
>    EXEC SQL DECLARE salespeople1 CURSOR FOR SEL_SALES_SQL1;
106c111
<    EXEC SQL OPEN salespeople;
---
>    EXEC SQL OPEN salespeople1;
119c124
<       EXEC SQL FETCH salespeople INTO :emp_info1;
---
>       EXEC SQL FETCH salespeople1 INTO :emp_info1;
125c130
<    EXEC SQL CLOSE salespeople;
---
>    EXEC SQL CLOSE salespeople1;
135a141,143
>    EXEC SQL AT :db_name DECLARE SEL_SALES_SQL STATEMENT;
>    EXEC SQL PREPARE SEL_SALES_SQL FROM :sales_SQL;
>    EXEC SQL DECLARE salespeople CURSOR FOR SEL_SALES_SQL;
175a184,186
>    EXEC SQL AT :db_name DECLARE SEL_CLERK_SQL STATEMENT;
> EXEC SQL PREPARE SEL_CLERK_SQL FROM :clerk_SQL;
> EXEC SQL DECLARE clerkpeople CURSOR FOR SEL_CLERK_SQL;

env

コマンド実行のための環境の表示、設定を行います。

% env|grep ORACLE
ORACLE_HOME=/home08/ora806/app/oracle/product/8.0.6
ORACLE_BASE=/home08/ora806/app/oracle
ORACLE_SID=ora806
ORACLE_JDBC=/home08/ora806/app/oracle/product/8.0.6/jdbc/lib
ORACLE_JLIB=/home08/ora806/app/oracle/product/8.0.6/jlib

file

ファイルの属性 (マジック番号を持つファイル) を表示します。

UNIX では各ファイルの先頭にマジック番号が設定されています。
マジック番号は、ファイルタイプを表す数値定数または文字列定数です。 /etc/magic に定義されています。

% file s0main.o 
s0main.o:       ELF 32-ビット MSB 再配置可能 SPARC バージョン 1

find

ファイルを検索します。
名前、ファイルのサイズ、アクセス日時、修正日時、ファイルの型など 様々な属性で検索できます。

% find . -name oracle
./app/oracle
./app/oracle/product/8.0.6/bin/oracle
./app/oracle/product/8.0.6/network/agent/events/oracle
./app/oracle/product/8.0.6/network/agent/jobs/oracle
./app/oracle/product/bak_8.0.6.0.0/bin/oracle
./app/oracle/product/bak_8.0.6.0.0/network/agent/events/oracle
./app/oracle/product/bak_8.0.6.0.0/network/agent/jobs/oracle

ftp

ファイルをネットワーク上にある別のマシンに転送します。

id

ログインユーザのユーザ ID、グループ ID を表示します。

% id -a
uid=100(ora806) gid=100(dba) groups=100(dba)

ipcs

プロセス間通信機能の状態を報告します。

% ipcs -a 
IPC status from  as of 2005年04月26日 (火) 13時28分52秒 JST
Message Queue facility inactive.
T         ID      KEY        MODE        OWNER    GROUP  CREATOR   CGROUP NATTCH SEGSZ  CPID  LPID   ATIME    DTIME    CTIME
Shared Memory:
m          0   0x50078932 --rw-r--r--     root     root     root     root      1 68   311 16345 11:37:49 11:37:53 23:03:43
m          1   0          --rw-rw-rw-     root     root     root     root      0 4096   588   588 23:03:56 23:03:56 23:03:56
m      24602   0x530248   --rw-r-----   ora806      dba   ora806      dba     26 5824512  1405  6158  9:48:40 16:55:40 19:27:39
m      16803   0x7802778c --rw-rw----   pro817      dba   pro817      dba     14 160194560  9172  9271 23:39:17 13:32:53 22:53:56
m       3004   0xd3a44b8c --rw-r-----   ora816      dba   ora816      dba     15 102326272  9546  9958 18:50:11 18:50:11 18:44:38
m    1497605   0x395d24e8 --rw-r-----     kato      dba     kato      dba     12 75497472  6991  9710  9:52:26 10:00:06 17:41:53
m      84606   0x7dee8038 --rw-r-----   ora816      dba   ora816      dba     14 102326272 12859 21354 21:06:35 21:15:49 12:52:49
m      13807   0x5f8f09e0 --rw-r-----   ora817      dba   ora817      dba      8 99901440  8262  8262 11:00:16 11:00:25 11:00:13
m       3608   0x24a7f758 --rw-r-----   ora901      dba   ora901      dba      7 117989376 12778 17710 14:43:56 14:44:45 23:11:27
m       3609   0xc59a7828 --rw-r-----   sup817      dba   sup817      dba      9 243818496 28271  8783 22:18:00 22:18:02 15:57:59
m       9010   0xbe6a32d8 --rw-r-----   pro816      dba   pro816      dba     12 372629504   444  2980 11:50:53 11:50:53  0:42:51

T         ID      KEY        MODE        OWNER    GROUP  CREATOR   CGROUP NSEMS OTIME    CTIME
Semaphores:
s          0   0          --ra-ra-ra-     root     root     root     root     1 no-entry 23:03:56
s    6291457   0          --ra-r-----   ora806      dba   ora806      dba    50 11:38:08 19:27:39
s    6553602   0xd9613700 --ra-ra----   pro817      dba   pro817      dba   257 11:07:50 22:53:57
s     983043   0xc2da91c4 --ra-r-----   ora816      dba   ora816      dba    54 8:28:10 18:44:38
s   12845060   0xa5185d28 --ra-r-----     kato      dba     kato      dba   154 13:28:52 17:41:54
s    9895941   0xc11a0e9c --ra-r-----   ora816      dba   ora816      dba    54 3:26:42 12:52:50
s    3473414   0x5ffecbf0 --ra-r-----   ora817      dba   ora817      dba    54 11:00:16 11:00:15
s    1114119   0x1a39e19c --ra-r-----   ora901      dba   ora901      dba   154 13:25:29 23:11:27
s    3670024   0xc7124238 --ra-r-----   sup817      dba   sup817      dba   154 5:06:36 15:58:00
s    2293769   0x45e67c6  --ra-r-----   pro816      dba   pro816      dba    54 13:28:07  0:42:53
s    1835018   0x84335208 --ra-r-----   ora817      dba   ora817      dba   154 18:57:04 18:57:01

kill

プロセスを強制終了させます。

% kill -9 11418

ksh

ksh コマンドインタプリタ。

ls

ディレクトリの内容を表示します。

% ls -aCFR svrmgr
svrmgr:
./      ../     admin/  mesg/

svrmgr/admin:
./             ../            catnosvm.sql   catsvrmg.sql

svrmgr/mesg:
./          ../         mgrja.msb   mgrus.msb   mgrus.msg

mkdir

ディレクトリを作成する。

% mkdir temp

mv

ファイルを移動する (ファイル名を変更する)。

% ls
temp
% mv temp tmp
% ls
tmp

ping

パケットをネットワーク上のホストに送る。

% ping dio
dio.it.ns-sol.co.jp is alive

rm

ファイルやディレクトリを削除する。

% ls
a    tmp
% rm a
% ls
tmp

stty

端末ラインの設定を変更・表示します。

% stty erase "^H" kill "^U" intr "^C" susp "^Z"

ulimit

現在のシェルとそのシェルから起動されたプロセスで、 利用できるシステム資源の制限値を設定または取得します。

% ulimit -a
時間 (秒)            制限なし
ファイル (ブロック)  制限なし
データ (K バイト)    制限なし
スタック (K バイト)  8192
コアダンプ(ブロック) 制限なし
nofiles (記述子)     64
vmemory (K バイト)   制限なし

umask

ファイル生成マスクを表示、設定します。 数値は8進で UNIX では8進数は先頭に0をつけます。

% umask 022
% umask 
22




csh の組み込みコマンド

alias と unalias

別名 name に def を割り当てます。 別名 name の設定を解除します。

% alias cd "cd \!*;pwd"
% alias cd 
cd !*;pwd
% unalias cd 
% alias cd 

limit

ログインアカウントで実行中のプロセス、 またはそれが生成したすべてのプロセスについて、 各プロセスが指定された resource を max-use 以上消費しないよう制限します。

% limit  coredumpsize 0M

プロセスが coredump した場合に、その coredump 出力を抑止します。

rehash

新しく追加されたコマンドに合わせて、path 変数内 にリストされたディレクトリの内容の内部ハッシュテーブルを再計算します。
csh や ksh スクリプトを新たに作成した場合は、 rehash しないとパス指定に反映されません。

% which tstX
tstX: Command not found.
% rehash 
% which tstX 
/home16/taka/csh/tstX

setenv

環境変数の設定、表示します。

% setenv ORACLE_SID utf8

source

source で実行した csh スクリプトは現セッションに有効です。 通常環境変数の設定などに使います。

% source .cshrc




その他

FAQ

練習問題

  1. vi で開けないような大きなファイルがあります。どうやって見ますか?
  2. キーワード sort を含む man を探すには?
  3. $HOME ディレクトリ配下にあるファイルの検索
  4. ls_l.out はあるディレクトリのファイルリストです。 サイズ順にソートしなさい。
  5. $ORACLE_HOME/precomp/demo/proc/*.pc の行数、単語数、バイト数を表示しなさい。
  6. 自分が使っている csh の PID を調べましょう。
  7. 環境変数 STUDENT_NAME を設定しましょう。 また正しく設定されていることを確認します。
  8. 上記3からの結果を script コマンドで exec.log に取得します。


【コマンド】
man(1) pwd(1) cd(1) ls(1) cat(1) head(1) tail(1) file(1) vi(1) ps(1) top(1) kill(1) find(1) man(1) grep(1) tar(1)

【用語】
ディレクトリ、 カレントディレクトリ、 ホームディレクトリ、 絶対ディレクトリ、 相対ディレクトリ、 シンボリックリンク、 リダイレクト、 パイプ、 テキストファイル、 バイナリファイル、 プロセス、 アーカイブ・ファイル、 パーミッション、 マジック番号