OpenWindows ユーザーズガイド (上級編)

コマンドの入力

コマンドプロンプトが表示されているときは、システムがコマンドの入力待ち状態であることを示します。次の例に示すように、コマンドプロンプトに対して date というコマンドを入力してみてください (date と入力して Return キーを押します)。

$ date
Mon Feb 3 10:12:51 PST 1992
$

この例に示すように、date コマンドは現在の日付と時間を表示します。次に、同じコマンドの先頭を大文字にして入力してみてください。

$ Date
Date: Command not found.
$

上記のように、システムは大文字の D と小文字の d を区別しています。SunOS オペレーティングシステムの大部分のコマンドは小文字です。

誤った入力の訂正

最初に Date と入力して Return キーを押す前に誤りに気付いたとします。ユーザが入力したテキストは、Return キーを押すまではシステムに送信されません。したがって、Return キーを押す前であれば、入力の誤りを訂正できます。誤りを訂正するには、次の 2 つの方法があります。

これら 2 つの方法を試して動作を確認してください。(Delete キーと Backspace キーの動作はシステムによって異なる場合があります。Ctrl-U はほとんどのシステムで同様に動作します。)

複数のコマンドと長いコマンドの入力

1 行に複数のコマンドを入力することもできます。次の date コマンドと logname コマンドの例に示すように、コマンドの間にセミコロン (;) を挿入してください。

$ date; logname
Mon Feb 3 10:19:25 PST 1992
spanky
$

上記の例に示すように、現在の日付と時間 (date コマンドの出力) およびシステムに現在ログインしているユーザのログイン名 (logname コマンドの出力) が続けて表示されます。

非常に長いコマンドを入力する場合は、バックスラッシュ文字 (¥) を使うことによって次の行に続けて入力できます。次の例を参照してください。

$ date; ¥
logname
Mon Feb 3 10:23:25 PST 1992
hankw
$

date コマンドと logname コマンドは決して長いコマンドではありません。この例では、複数のコマンドを次の行に続けて入力するという概念を、できるだけ簡単に説明するためにこれらのコマンドを使っています。入力するコマンドが画面の幅よりも実際に長いときは、バックスラッシュ文字を使うと非常に便利です。


注 -

OpenWindows 環境でシェルツールやコマンドツールのウィンドウを使っている場合は、次の行にコマンドを続けて入力するためにバックスラッシュ文字を使う必要はありません。入力中のコマンドが行の終わりにくると、次の行に自動的に改行され、Return キーを押したときにそれらの全コマンドが実行されます。


前回のコマンドを繰り返す


注 -

この節で説明するコマンド繰り返しの機能は、C シェルを使っている場合にだけ利用できます。


最後に入力したコマンドを繰り返すには、!! を入力して Return キーを押す方法が簡単です。システムは、ユーザが入力したコマンドの履歴を保持しているため、以前入力したコマンドを繰り返し実行できます。たとえば、最後に入力したコマンドが date の場合は次のようになります。

example% !!
date
Mon Feb 3 10:26:20 PST 1992
example%

!x と入力すると、以前に入力した任意のコマンドを繰り返し実行できます。x は、繰り返すコマンドに対応する履歴リスト上のコマンド番号です。履歴リストを参照するには、history と入力して Return キーを押します。次の例に示すようなリストが表示されます。

example% history
1  pwd
2  clear
3  ls -l
4  cd /usr/home/worker
5  logname
6  date
7  history

また、! の後に負の番号を入力しても履歴リスト上のコマンドを繰り返すことができます。たとえば、履歴リスト上の最後のコマンドから数えて 3 番目のコマンドを実行するには、次のように入力します。

example% !-2
logname
hankw
example%

上記の履歴リストを例にとれば、logname コマンドが繰り返し実行されます。

! の後に以前のコマンド名の先頭から数文字を入力してもコマンドを再実行できます。たとえば、以前に clear コマンドを入力して画面をクリアした場合は、!cl と入力すれば画面を再度クリアできます。ただし、この方法によるコマンドの繰り返しでは、繰り返したいコマンドを履歴リスト上で一意に識別できる文字数を指定しなければなりません。! の後に 1 文字しか指定しなかった場合は、その文字で始まるコマンドのうちで最後に入力したものが繰り返されます。

コマンドオプションの指定

多くのコマンドにはオプションがあり、そのコマンドに関連する特別機能を実行できます。たとえば、date コマンドには、ローカル時間ではなくグリニッジ標準時間で日付を表す -u というオプションがあります。

$ date -u
Mon Feb 3 11:06:51 GMT 1993
$

大部分のオプションは、1 文字の前にダッシュ (-) を付けたものです。オプションを持たないコマンドもあれば、複数のオプションを持つコマンドもあります。コマンドに対して引数を持たないオプションを複数指定する場合は、それらのオプションを個別に入力しても (-a -b) まとめて入力しても (-ab) かまいません。

コマンド出力のリダイレクトとパイプ

特に指定しない限り、コマンドの出力結果は画面上に表示されます。特別な記号を使って、コマンドの出力をリダイレクト (出力先を変更) できます。たとえば、コマンド出力を画面に表示せずにファイルに保存できます。次の例は、リダイレクト記号 (>) の使い方を示しています。

$ date > sample.file
$ 

この例では、date コマンドからの出力が sample.file という新規ファイルにリダイレクトされています。次に、more コマンドを使って sample.file の内容を表示します。

$ more sample.file
Mon Feb 3 12:56:26 PST 1993
$

この例に示すように、sample.file には date コマンドからの出力結果が入っています。(more コマンドについての詳細は、第 3 章「ファイルとディレクトリの操作」を参照してください。)

あるコマンドの出力を別のコマンドの入力としてリダイレクトすることもできます。このような方法で複数のコマンドを連結したものをパイプラインと呼びます。パイプラインは、パイプと呼ばれる垂直バー (|) を使って構成します。)

たとえば、コマンドの出力結果をファイルに保存する代わりに、プリントコマンド (lp) の入力としてリダイレクトする場合、パイプ記号 (|) を使えます。date コマンドからの出力をプリンタに直接送信するには、次のように入力します。

$ date | lp
$

これによって、date コマンドの結果が印刷されます。(lp コマンドを使ったファイルの印刷方法については、第 8 章「プリンタの使い方」「デフォルトプリンタへの印刷要求の実行」を参照してください。

ここで紹介したコマンドのリダイレクト例は非常に簡単なものですが、さらに高度なコマンドを学習するに従って、リダイレクトとパイプのさまざまな用途が理解できます。

バックグラウンドでコマンドを実行する

コマンドプロンプトからコマンドを始動した後で、そのコマンドをバックグラウンドに置くと便利な場合がよくあります。コマンドをバックグラウンドに置かない場合は、そのコマンドが作業を完了するまでは次のプロンプトは表示されません。しかし、中には完了するまでにかなりの時間がかかるコマンドもあるため、その間に別のコマンドを実行する方が効率的です。

コマンドをバックグラウンドで実行する場合は、下記に示すようにコマンド名の後にアンパサンド (&) を入力します。その下に表示されている番号は、プロセス ID です。

$ bigjob &
[1] 21414
$ 

この例では、コマンド bigjob はバックグラウンドで実行され、他のコマンドの入力を続行できます。バックグラウンドのジョブが終了すると、次にコマンド (この例では date) を入力したときに下記のようなメッセージが表示されます。

$ date
Mon Feb 3 10:23:25 PST 1992
[1]  + Done    bigjob
$ 

バックグラウンドのジョブが完了する前にログアウトする可能性がある場合は、下記の例に示すように、nohup コマンド (no hangup) を使ってジョブを起動すると、ログアウトしてもそのジョブを完結させることができます。それ以外の場合は、ログアウトするとバックグラウンドのジョブは終了してしまいます。

$ nohup bigjob &
[1] 21414
$