C Shell
コマンドは、次のような手段で1行に複数個連結することができる。 ; は、1つめのコマンドを実行し、次に2つめのコマンドを実行することを意味する。 && は、1つめのコマンドを実行し、そのリターンコードが0(成功)の場合、2つめのコマンドを実行する。 || は、1つめのコマンドを実行し、リターンコードが0以外(失敗)の場合に2つめのコマンドを実行する。
C shell はC言語の演算子を流用した文法で32ビット整数の式を評価する機能を実装している。他に文字列比較の演算子やファイルシステムのテスト演算子(あるファイルが存在するかどうかのテスト)もある。演算子とオペランドは空白で区切らなければならない。変数は $name の形式で参照する。
演算子の優先順位もC言語を踏襲しているが、優先順位の等しい演算子が並んでいるときの演算順序の曖昧さを解決する演算子の結合性はC言語とは異なる。C言語では多くの演算子で左から右へ結合していくのに対し、C shell では右から左に結合していく。以下に例を示す。
C shell での括弧はビットシフト演算子と入出力リダイレクトを混同しないために使用している。どちらの言語でも括弧を使えば評価順序を明確化できる。なお先述した通り、シェル変数の値は文字列であり、@ 文などの式の中でだけ文字列を数値に変換して評価し、結果を文字列に変換して変数に格納している。
ディレクトリスタックは、カレントディレクトリをスタックにプッシュまたはポップでき、ファイルシステム内の複数個所で少ないキーストロークで行き来することができる。
複数のコマンドをパイプで接続でき、あるコマンドの出力を次のコマンドの入力とすることができる。この場合、2つのコマンドは並行して動作する。 | は、前のコマンドの標準出力を次のコマンドの標準入力に接続する。エラーはシェルのウィンドウに表示される。 |& は、前のコマンドの標準出力と標準エラー出力を次のコマンドの標準入力に接続する。
repeat文は「整数値」で指定された回数だけ「コマンド」(ひとつのコマンド)を繰り返し実行する。
csh はシェル変数と環境変数を実装している。環境変数は setenv 文で生成でき、その値は常に単純な文字列であり、exec システムコール経由任意の子プロセスに引き継がれる。
シェル変数は set 文や @ 文で生成され csh 内部で使われる。子プロセスには渡されない。シェル変数は単純な文字列の場合と文字列の配列の場合がある。事前定義されたシェル変数もいくつかあり、csh 内部の各種オプションの制御に使われる。例えば、ワイルドカードが何にもマッチしなかった際の動作などを設定できる。
現在のバージョンの csh では、変数に格納できる文字列の長さは任意であり、数百万文字でもよい。