筑波大学 システム情報工学研究科 
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
	http://www.coins.tsukuba.ac.jp/~syspro/2008/No10_files/csh.html
あるいは、次のページから手繰っていくこともできます。
	http://www.coins.tsukuba.ac.jp/~syspro/2008/
	http://www.coins.tsukuba.ac.jp/~yas/
<file 標準入力をfileに切替える。 >file 標準出力をfileに切替える。fileの内容が上書きされる。 >>file 標準出力をfileに切替える。fileの末尾に追加される。 >&file 標準出力と標準エラーをfileに切替える。 p1 | p2 p1 の標準出力をパイプに、p2 の標準入力をパイプに p1 |& p2 p1 の標準出力と標準エラーをパイプに、p2 の標準入力をパイプに p1 <<EOF p1 の標準入力を、EOF という文字がが現れるで(here document)。 ... EOF
$1 $2 $3 ... n番目の引数 $argv[1] $argv[1] $argv[2] ... n番目の引数 $0 プログラムの名前 $* 全引数 $#argv 引数の数 shift 引数のシフト
set var=value			シェル変数の設定
set var="value1 value2"		シェル変数の設定
set var=(value1 value2)		シェル変数の設定
unset var			シェル変数の解除
$var "$var" ${var} $var[index]	シェル変数の利用
$$				PID
@ var=式			式の計算
setenv var value		環境変数の設定
setenv var "value1 value2"	環境変数の設定
unsetenv var			環境変数の解除
$var "$var" ${var}		環境変数の利用
# コメント
"..." $、``、\を解釈した文字列 '...' 文字列 `...` ...にあるプログラムを実行 \c cそのもの(\* や \")で使う \改行 行末のキャンセルX(1行で書けない時の継続行)
 *		0文字以上の任意の文字列
?		任意の1文字
[abc]		[]の中の任意の1文字
x{a,b,c}z	{}の中の展開。xaz xbz xczの意味。
~user		ユーザのホーム・ディレクトリ
if( ... ) cmd if( ... ) then cmd endif if( ... ) then cmd else cmd endif if( ... ) then cmd else if( ... ) then cmd else if( ... ) then cmd else cmd endif
while( ... ) cmd end foreach var (w1 w2 w3 w4) cmd $var end
switch( string ) case label: breaksw default: breaksw endsw
goto label ... label: exit 数 終了 exec cmd fork しないで自分自身で cmd を実行。戻ってこない。 source script fork しないで自分自身で script を実行。終了後、戻ってくる。
+ - * / % << >>		計算(数)
< > <= >=		比較(数)
== !=			比較(数、文字列)
=~ !~			パタンマッチ。if( aaa =~ a*b ) のように使う。
~ &  |  ^ 		ビット演算
! && ||			論理演算
-r filename		読み込み可能
-w filename		書き込み可能
-x filename		実行可能
-e filename		ファイルが存在する
-f filename		普通のファイルが存在する
-d filename		ディレクトリが存在する
-z filename		ファイルが空(長さが zero)
-o filename		ファイルの owner の時1
{ command }		コマンドの実行。成功(exit(0))すれば 1。(C言語と逆なので注意。)
( )			式のグループ化
p1 ; p2 p1 の実行後 p2 の実行。 p1 & p1 のバックグランド実行(waitしない) p1 && p2 p1 を実行して、失敗したら終わり。成功したら p2 を実行。 p1 || p2 p1 を実行して、成功したら終わり。失敗したら p2 を実行。
シェル変数term 変更すると環境変数 TERM にも反映される。 シェル変数path 変更すると環境変数 PATH にも反映される。 シェル変数home 変更すると環境変数 HOME にも反映される。
% lsシェルスクリプトでは、foreach f(*) の代りに、foreach f ($*) を使えば引 数、`cat file` を使えば、file の内容つい てループを実行することができる。file1 file2 file3 % foreach f (*)
foreach?
% @ x = 1 + 2% echo $x
3 %
![]()
% set x=""% foreach i (a b c)
foreach? echo $x
abc %
![]()
exit(0); した時に、成功(true)、それ以外の時に失敗(false) と扱う。
% if ( { /bin/true } ) echo ok 
ok
% echo $status 
0
% if ( { /bin/false } ) echo ok 
% echo $status 
1
% 
コマンドの実行直後に変数 $status を見てもわかる。