Cシェル入門(2)
コマンド行の修正
historyコマンドの利用
- Cシェルは 入力した コマンドの リストを 保存して いる。 この 履歴 (history) 機構に よって、 履歴 リスト中の コマンドを 選択あるいは 修正して 使用する ことが できる。
- 保存できる コマンドの 数は、 history 変数で 指定できる。
例: % set history = 40 % echo $history 40
- 履歴リストは history コマンドで見ることができる。
例: % ls ... % history ... 4 ls 5 history
コマンドの繰り返しと修正
- コマンドの繰り返し
!! 直前のコマンドの繰り返し !4 history で 4 番目のコマンドの繰り返し !-2 直前の1つ前のコマンドの繰り返し !hi hi で始まるコマンドの繰り返し - 直前のコマンドの修正
^ba^ab ba を ab に修正して実行 ^ba^ab^:p 修正結果を表示するだけで実行しない !$ 直前のコマンドの最後の引数 例: % mdkir animals mdkir: コマンドが見つかりません % ^dk^kd mkdir animals % !! mkdir animals mkdir: ディレクトリの作成に失敗しました。 "animals"; ファイルが存在します。 % rmdir !$ rmdir animals
プロセス番号 PID
実行中のコマンドを調べる
- Cシェルがコマンドを解釈すると、 独立のプロセスが生成され、コマンドを実行する。
- プロセスには一意の番号が与えられる。これを PID と呼ぶ。
- PID を調べるコマンド
ps 端末で実行中のプロセス番号を調べる ps -e システム全体で実行中のプロセス番号を調べる ps -f 実行ユーザなど詳しく調べる 例: % ps PID TTY TIME CMD 12445 pts/2 0:00 csh % ps -ef UID PID PPID C STIME TTY TIME CMD root 0 0 0 9月 17 ? 0:01 sched root 1 0 0 9月 17 ? 0:02 /etc/init - ... % ps -ef | grep 02ss001
バックグラウンド実行
- 通常、端末でのコマンド実行は、コマンド終了まで次のコマンドを入れることはできない。
- バックグラウンド実行では、コマンド自体がキーボード入力を必要としなければ、コマンド終了に関わらず次のコマンドを入力し実行させることができる。
- バックグラウンド実行と終了
& コマンドの最後に付けてバックグラウンド実行 kill PID プロセス番号(PID)のプロセスを終了させる 例: % clock & [1] 18033 % ps -e | grep clock 18033 pts/3 0:00 clock % kill 18033
プロセスとジョブ
- シェルからバックグラウンド実行させると、PID とともに ジョブ番号が与えられる。
- ジョブ番号を使ったコマンド実行の制御もできる。
- ジョブとプロセスの違いなどは自習に任せる。
シェル変数と環境変数
- history のように set コマンドで設定するシェル変数は、実行中のCシェルの中だけで有効である。
- setenv MYNAME "Tokio Kikuchi" のように 環境変数を設定することができる。環境変数は、子プロセスに引き継がれる。
- ~/.cshrc には、Cシェルが起動されるときに設定したい、シェル変数や環境変数の設定コマンドを書いておくことができる。ユーザは必要に応じて、 dtpad などのエディタを用いて、これらの設定を変更することができる。
Cシェルの終了
端末で exit を入力する。
練習問題
- history 変数を 10 に設定しなさい。
- ~/coreinfo ディレクトリに移動しなさい。
- cat hello で hello ファイルを表示しなさい。
- ^ を使って cat を head に置き換えてコマンド実行しなさい。
- sleep コマンドは 引数で与えられた秒数だけ停止状態を作る。 sleep 10 で 10秒間停止することを確かめなさい。
- バックグラウンドで 30秒間の停止状態を作り、ps で確かめなさい。
- history コマンドの出力を hist5 というファイルに入れなさい。