Командный язык C-shell главным образом отличается от Bourne-shell тем, что его синтаксис приближен к синтаксису языка Си (это, конечно, не означает действительной близости языков). В основном, C-shell включает в себя функциональные возможности Bourne-shell. Если не вдаваться в детали, то реальными отличиями C-shell от Bourne-shell является поддержка протокола (файла истории) и псевдонимов.
В протоколе сохраняются введенные в данном сеансе работы с интерпретатором командные строки. Размер протокола определяется установкой предопределенной переменной history, но последняя введенная командная строка сохраняется всегда. В любом месте текущей командной строки в нее может быть подставлена командная строка (или ее часть) из протокола.
Механизм псевдонимов (alias) позволяет связать с именем полностью (или частично) определенную командную строку и в дальнейшем пользоваться этим именем.
Кроме того, в C-shell по сравнению с Bourne-shell существенно расширен набор предопределенных переменных, а также введены более развитые возможности вычислений (по-прежнему, все значения представляются в текстовой форме).
Если C-shell является синтаксической вариацией командного языка семейства shell по направлению к языку программирования Си, то Korn-shell - это непосредственный последователь Bourne-shell.
Если не углубляться в синтаксические различия, то Korn-shell обеспечивает те же возможности, что и C-shell, включая использование протокола и псевдонимов.
Реально, если не стремиться использовать командный язык как язык программирования (это возможно, но по мнению автора, неоправданно), то можно пользоваться любым вариантом командного языка, не ощущая их различий.
элемент: слово
ввод-вывод
имя = значение
простая_команда: элемент
элемент простой_команды
команда: простая_команда
( список-команд )
{ список-команд }
for имя do список-команд done
for имя in слово do список-команд done
while список-команд do список-команд done
until список-команд do список-команд done
case слово in case-часть esac
if список-команд then список-команд else-часть fi
конвейер: команда
конвейер | команда
andor: конвейер
andor && конвейер
andor || конвейер
список-команд: andor
список-команд ;
список-команд &
список-команд ; andor
список-команд & andor
ввод-вывод: > файл
< файл
<< слово
>> файл
цифра > файл
цифра < файл
цифра >> файл
файл: слово
& цифра
& -
case-часть: шаблон ) список-команд ;;
else-часть: elif список-команд then список-команд else-часть
else список-команд
пустая-строка
пустая-строка:
слово: последовательность символов кроме пробелов
имя: последовательность букв, цифр или знаков подчеркивания, начинающаяся с буквы