注意 • 教科書で扱っている対話型シェル … bash (Bourne-Again Shell) 計算機科学概論 • 授業で扱う対話型シェル … csh (C Shell), tcsh 第3回 ‒我々のシステムの標準対話型シェル シェル • 次回以降のシェルスクリプトについては sh (Bourne Shell)を用いる シェル 指令 シェルの仕事の例 解釈器 • UNIXにおけるコマンドインタプリタ ‒ユーザからの入力(指令)を受け取り、コマンド の実行を行う • シェルも一つのプログラム • プロンプト(例 %)を表示 • 空白をコマンドや引数の区切りとして扱う • 「<」や「>」をリダイレクションの指示 と解釈 ‒次のようなことも可能 • 「~」をホームディレクトリと解釈 •シェルから別のシェルを起動 • 「% !p」「% !!」 •自分でシェルを作る コマンドの実行 • % コマンド名 引数1 … 引数n ‒ 間は空白で区切る コマンドの実行 コマンド ‒ シェルはコマンドが終了するまで待ち、終了したら プロンプトを表示(フォアグラウンドジョブ) • % コマンド1 ; コマンド2 ; … ; コマンドn ‒ 複数コマンドを順に実行 •例 % sleep 3 % echo first; sleep 3; echo second • % コマンド & ‒ シェルはコマンドの実行が終了するまで待たず、す ぐにプロンプトを表示(バックグラウンドジョブ) • % コマンド1 & … & コマンドn & •例 % sleep 3 & % echo first & sleep 3 & echo second & 標準入出力と リダイレクション・パイプ ジョブ制御 % コマンド & •例 ‒% …/Emacs • 「<」, 「>」, 「|」をリダイレクショ バックグラウンド ‒^Z % fg ‒% bg ‒% fg %1 % fg % bg ン・パイプの指示と解釈 サスペンド • 実行されるコマンドの標準入出力の割り 当てを一時的に変更 ^Z • 「自分でシェルを作る」演習ではこの部 フォアグラウンド 分を作らなくてはならない % コマンド ‒3年次「ソフトウェア演習I」 シェル変数 • シェルにもプログラミング言語と同様の 変数がある % set 変数名=値 % set % unset 変数名 変数に値を代入 変数一覧 変数を消去 • コマンド中の「$変数名」はその変数の値 で置き換えられる シェル変数 % set foo=abcd % echo $foo •(% echo abcdと同じ) % echo $foo$foo > $foo •(% echo abcdabcd > abcd と同じ) % cat abcd % unset foo % echo $foo 特殊な変数 • いくつかの変数はシェルの動きに影響を与える ‒ prompt … プロンプト文字列 % set oldprompt="$prompt" % set prompt="test$ " % set prompt="$oldprompt" ‒ path … コマンドの検索パス • 通常はシェルの初期設定ファイルに記述 ‒ /.cshrc, /.login 環境変数 • 通常のシェル変数 ‒作業用 ‒実行したコマンドに引き継がれない ‒いくつかの変数はシェル自体の動作に影響 • 環境変数 ‒実行したコマンドに引き継がれる ‒シェルから起動されるコマンドの動作に影響 環境変数 • 環境変数の操作 • 「ファイル名のパターン」を表す表現 % setenv 変数名 値 % setenv PAGER cat; man ls man ls • これも通常は初期設定ファイルに記述 •例 % echo *.p % ls -l [a-z]*/mondai* % echo .* 特殊な置換 • 以下の置換は対応するファイル名が存在 しなくても起こる •例 % ls ~/*~ ホームディレクトリ 分配法則 % echo a{b,c{z,x}} % mv foo{,.bak} 「…」中のいずれか –[…] •例 –{○,…,○} 任意の1文字 –? % unsetenv 変数名 –~, ~ログイン名 任意の文字列 –* % printenv 変数名 % unsetenv PAGER; ファイル名置換 脱出文字とクオート • 「<」「$」「*」などに特殊な意味を持たせな いための仕掛け ‒ 直前に脱出文字「\」を付ける ここの環境では ‒ クオート(「’」や「"」)で括る 「¥」キーで入力 •例 % % % % % % echo echo echo echo echo echo \* \< \\ a b a\ \ b ’* < \’ "a b" a" "b ’$HOME’ "$HOME" ’"’ "’" \" \’
© Copyright 2024 ExpyDoc