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

コマンドの入力

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


$ date

Mon Sep 17 10:12:51 PST 2001

$

このコマンドは、現在の日時を表示します。同じコマンドの先頭の文字を大文字で入力すると、次のメッセージが表示されます。


$ Date

Date: Command not found.

$

Solaris オペレーティング環境は大文字の D を小文字の d とは異なるものとして解釈するため、Date コマンドは失敗します。Solaris オペレーティング環境のほとんどのコマンドは小文字です。

誤った入力の訂正

ユーザが入力したコマンドは、Return キーを押すまではシステムに送信されません。コマンドを間違って入力しても、Return キーをまだ押していなければ次の方法で入力を訂正できます。

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

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

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


$ date; logname

Tue Oct 31 15:16:00 MST 2000

spooky

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

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


$ date; \

logname

Tue Oct 31 15:17:30 MST 2000

spooky

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


注 –

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


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

Korn、Bourne Again、C、TC、および Z シェルには、入力されたコマンドの履歴を保持し、以前に入力されたコマンドを繰り返すことができるようにする機能があります。


注 –

Bourne シェル (sh) では、history コマンドは使用できません。


Bourne Again、C、TC、Z シェルでコマンドを繰り返す

Bourne Again、C、TC、または Z シェルを使用している場合は、!! と入力して Return キーを押すことにより最後に入力したコマンドを繰り返し実行することができます。


example%!!

date

Tue Oct 31 15:18:38 MST 2000

example%

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


example% history

1  pwd

2  clear

3  ls -l

4  cd $HOME

5  logname

6  date

7  history

注 –

Z シェルは、履歴リストに history コマンドを表示しません。


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


example% !-2

date

Tue Oct 31 15:20:41 MST 2000

example%

注 –

Z シェル内で history コマンドの直後にこのコマンドを繰り返し実行するには、! のあとの負の数を 1 つ増やしてください (!-3)。


上記の履歴リストの例では、date コマンドが繰り返し実行されます。

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

Korn シェルでのコマンドの繰り返し

Korn シェルを使用する場合、次のコマンドを使用して以前のコマンドを繰り返し実行します。


$ fc -s -

date

Tue Oct 31 15:18:38 MST 2000

$

fc -s x と入力すると、以前に入力した任意のコマンドを繰り返し実行できます。x は、繰り返すコマンドに対応する履歴リスト上のコマンド番号です。履歴リストを参照するには、fc -l と入力して Return キーを押します。履歴リストの使用例を次に示します。


$ fc -l

344  pwd

345  clear

346  ls -l

347  cd $HOME

348  logname

349  date

350  history

$

履歴リストからコマンドを繰り返し実行するには、fc -s コマンドにマイナスの番号を付けて実行します。たとえば、履歴リスト上の最後のコマンドから数えて 2 番目のコマンドを実行するには、次のコマンドを入力します。


$ fc -s -2

date

Tue Oct 31 15:20:41 MST 2000

$

上記の履歴例では、date コマンドが繰り返し実行されます。

fc -s コマンドに以前のコマンドの最初の 2、3 の文字を付けることによっても実行できます。たとえば、以前に date コマンドを使用して現在の日時を表示した場合、fc -s da と入力すると日時を再度表示できます。ただし、履歴リスト内でコマンドを特定するのに十分な文字数を入力する必要があります。fc -s のあとに 1 文字しか指定しなかった場合は、その文字で始まるコマンドのうちで最後に入力したものが繰り返されます。

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

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


$ date -u

Tue Oct 31 22:33:16 GMT 2000

$

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

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

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


$ date> sample.file

$ 

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


$ more sample.file

Tue Oct 31 15:34:45 MST 2000

$

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

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

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


$ date | lp

request id is jetprint-46 (1 file)

$

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

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

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

コマンドを入力して Return キーを押すと、システムはそのコマンドを実行し、コマンドがタスクを完了するのを待ち、その後別のコマンドを入力するようプロンプトを表示します。しかし、中には完了するまでにかなりの時間がかかるコマンドもあるため、その間に別のコマンドを実行する方が効率的です。前のコマンドを実行している間、別のコマンドを実行するには、バックグラウンドで実行できます。

バックグラウンドでコマンドを実行するには、次の例のようにアンパサンド (&) をコマンドの後に入力します。


$ bigjob &

[1] 7493

$ 

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


$ date

Tue Oct 31 15:44:59 MST 2000

[1]    Done                 bigjob

$ 

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


$ nohup bigjob &

[3] 7495

$