Командный интерпретатор. Руководство пользователя. Командная строка

Аннотация: Рассматриваются внутренние команды, поддерживаемые интерпретатором Cmd.exe, и наиболее часто используемые внешние команды (утилиты командной строки). Описываются механизмы перенаправления ввода/вывода, конвейеризации и условного выполнения команд. Даются примеры команд для работы с файловой системой

Оболочка командной строки Windows. Интерпретатор Cmd.exe

В операционной системе Windows , как и в других операционных системах, интерактивные (набираемые с клавиатуры и сразу же выполняемые) команды выполняются с помощью так называемого командного интерпретатора, иначе называемого командным процессором или оболочкой командной строки ( command shell ). Командный интерпретатор или оболочка командной строки - это программа , которая, находясь в оперативной памяти, считывает набираемые вами команды и обрабатывает их. В Windows 9x, как и в MS-DOS , командный интерпретатор по умолчанию был представлен исполняемым файлом command . com . Начиная с версии Windows NT, в операционной системе реализован интерпретатор команд Cmd.exe, обладающий гораздо более мощными возможностями.

Запуск оболочки

В Windows NT/2000/XP файл Cmd.exe, как и другие исполняемые файлы, соответствующие внешним командам операционной системы, находятся в каталоге %SystemRoot%\SYSTEM32 (значением переменной среды %SystemRoot% является системный каталог Windows, обычно C:\Windows или C:\WinNT). Для запуска командного интерпретатора (открытия нового сеанса командной строки) можно выбрать пункт Выполнить… (Run) в меню Пуск (Start), ввести имя файла Cmd.exe и нажать кнопку OK. В результате откроется новое окно (см. рис. 2.1), в котором можно запускать команды и видеть результат их работы.


Рис. 2.1.

Внутренние и внешние команды. Структура команд

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором - такие команды называются внутренними (например, COPY или DIR ) Другие команды операционной системы представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и Cmd.exe, которые Windows загружает и выполняет аналогично другим программам. Такие команды называются внешними (например, MORE или XCOPY ).

Рассмотрим структуру самой командной строки и принцип работы с ней. Для того, чтобы выполнить команду, вы после приглашения командной строки (например, C:\> ) вводите имя этой команды (регистр не важен), ее параметры и ключи (если они необходимы) и нажимаете клавишу . Например:

C:\>COPY C:\myfile.txt A:\ /V

Имя команды здесь - COPY , параметры - C:\myfile.txt и A:\ , а ключом является /V . Отметим, что в некоторых командах ключи могут начинаться не с символа /, а с символа – (минус), например, -V .

Многие команды Windows имеют большое количество дополнительных параметров и ключей, запомнить которые зачастую бывает трудно. Большинство команд снабжено встроенной справкой, в которой кратко описываются назначение и синтаксис данной команды. Получить доступ к такой справке можно путем ввода команды с ключом / ?. Например, если выполнить команду ATTRIB / ?, то в окне MS-DOS мы увидим следующий текст:

Отображение и изменение атрибутов файлов. ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[диск:][путь]имя_файла] + Установка атрибута. - Снятие атрибута. R Атрибут "Только чтение". A Атрибут "Архивный". S Атрибут "Системный". H Атрибут "Скрытый". /S Обработка файлов во всех вложенных папках указанного пути.

Для некоторых команд текст встроенной справки может быть довольно большим и не умещаться на одном экране. В этом случае помощь можно выводить последовательно по одному экрану с помощью команды MORE и символа конвейеризации |, например:

В этом случае после заполнения очередного экрана вывод помощи будет прерываться до нажатия любой клавиши. Кроме того, используя символы перенаправления вывода > и >> , можно текст, выводимый на экран, направить в текстовый файл для дальнейшего просмотра. Например, для вывода текста справки к команде XCOPY в текстовый файл xcopy.txt, используется следующая команда:

XCOPY /? > XCOPY.TXT

Замечание

Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств: PRN (принтер), LPT1 –LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал: при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).

Перенаправление ввода/вывода и конвейеризация (композиция) команд

Рассмотрим более подробно поддерживаемые в Windows UNIX-подобные концепции переназначения устройств стандартного ввода/вывода и конвейерного выполнения команд.

С помощью переназначения устройств ввода/вывода одна программа может направить свой вывод на вход другой или перехватить вывод другой программы, используя его в качестве своих входных данных. Таким образом, имеется возможность передавать информацию от процесса к процессу при минимальных программных издержках. Практически это означает, что для программ, которые используют стандартные входные и выходные устройства, операционная система позволяет:

  • выводить сообщения программ не на экран (стандартный выходной поток), а в файл или на принтер (перенаправление вывода);
  • читать входные данные не с клавиатуры (стандартный входной поток), а из заранее подготовленного файла (перенаправление ввода);
  • передавать сообщения, выводимые одной программой, в качестве входных данных для другой программы (конвейеризация или композиция команд).

Из командной строки эти возможности реализуются следующим образом. Для того, чтобы перенаправить текстовые сообщения, выводимые какой-либо командой, в текстовый файл, нужно использовать конструкцию

команда > имя_файла

Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал - создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:

команда >> имя_файла

С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:

команда < имя_файла

Приведем несколько примеров перенаправления ввода/вывода.

  1. Вывод встроенной справки для команды COPY в файл copy.txt:

    COPY /? > copy.txt

  2. Добавление текста справки для команды XCOPY в файл copy.txt:

    XCOPY /? >> copy.txt

  3. Ввод новой даты из файла date.txt (DATE - это команда для просмотра и изменения системной даты):

    DATE < date.txt

Если при выполнении определенной команды возникает ошибка, то сообщение об этом по умолчанию выводится на экран. В случае необходимости сообщения об ошибках (стандартный поток ошибок) можно перенаправить в текстовый файл с помощью конструкции

команда 2> имя_файла

В этом случае стандартный вывод будет производиться в файл. Также имеется возможность информационные сообщения и сообщения об ошибках выводить в один и тот же файл. Делается это следующим образом:

Оболочкой (shell) в системеUNIXназывают механизм взаимодействия между пользователями и системой. По сути дела, это интерпретатор команд, который считывает набираемые пользователем строки и запускает выполнение запрошен­ных системных функций. Полный командный язык, интерпретируемый оболоч­кой, богат по возможностям и достаточно сложен, однако большинство команд просты в использовании и запомнить их не составляет труда.

Командная строка состоит из имени команды (то есть имени выполняемого фай­ла), за которым следует список аргументов, разделённых пробелами. Оболочка разбивает командную строку на компоненты. Указанный в команде файл загружается, и ему обеспечивается доступ к заданным в команде аргументам.

Любой командный язык семейства shellфактически состоит из трёх частей:

 служебных конструкций, позволяющих манипулировать с текстовыми строками и строить сложные команды на основе простых команд;

 встроенных команд, выполняемых непосредственно интерпретатором команд­ного языка;

 команд, представляемых отдельными выполняемыми файлами.

В свою очередь, набор команд последнего вида включает стандартные команды (системные утилиты, такие как vi,ccи т. д.) и команды, созданные пользователями системы. Для того чтобы выполняемый файл, разработанный пользовате­лем ОСUNIX, можно было запускать как командуshell, достаточно определить в одном из исходных файлов функцию с именемmain(имяmainдолжно быть глобальным, то есть перед ним не должно указываться ключевое словоstatic). Если употребить в качестве имени команды имя такого выполняемого файла, команд­ный интерпретатор создаст новый процесс и запустит в нём указанную выпол­няемую программу, начиная с вызова функцииmain.

Тело функции main, вообще говоря, может быть произвольным (для интерпрета­тора существенно только наличие входной точки в программу с именемmain), но для того, чтобы создать команду, которой можно задавать параметры, нужно придерживаться некоторых стандартных правил. В этом случае каждая функцияmainдолжна определяться с двумя параметрами –argcиargv. После вызова ко­манды параметруargcбудет соответствовать число символьных строк, указан­ных в качестве аргументов вызова команды, аargv– массив указателей на пе­ременные, содержащие эти строки. При этом имя самой команды составляет первую строку аргументов (то есть после вызова значениеargcвсегда больше или равно 1). Код функцииmainдолжен проанализировать допустимость задан­ного значенияargcи соответствующим образом обработать заданные текстовые строки.

Например, следующий текст на языке С может быть использован для создания команды, которая выводит на экран текстовую строку, заданную в качестве её аргумента:

#include

main(argc, argv)

printf(“usage: %s your-text\n”, argv);

printf(“%s\n”, argv);

Процессы

Процесс в ОС UNIXпонимается в классическом смысле этого термина, то есть как программа, выполняемая в собственном виртуальном адресном пространст­ве. Когда пользователь входит в систему, автоматически создается процесс, в ко­тором выполняется программа командного интерпретатора. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нём соответствующую программу, начи­ная с функцииmain. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нём другую программу (она тоже должна содержать функ­циюmain) и т. д.

Для образования нового процесса и запуска в нём программы используются два системных вызова API–fork() и ехес(имя_выполняемого_файла). Системный вызовforkприводит к созданию нового адресного пространства, состояние которого абсолютно идентично состоянию адресного пространства основного процесса (то есть в нём содержатся те же программы и данные). Для дочернего процесса заво­дятся копии всех сегментов данных.

Другими словами, сразу после выполнения системного вызова forkосновной (родительский) и порожденный процессы являются абсолютными близнецами;

управление и в том и в другом находится в точке, непосредственно следующей за вызовом fork. Чтобы программа могла разобраться, в каком процессе она те­перь работает – в основном или порождённом, функцияforkвозвращает разные значения: 0 в порождённом процессе и целое положительное число (идентифи­катор порождённого процесса – так называемыйPID) в основном процессе.

Теперь, если мы хотим запустить новую программу в порождённом процессе, нужно обратиться к системному вызову ехес, указав в качестве аргументов вызо­ва имя файла, содержащего новую выполняемую программу, и, возможно, одну или несколько текстовых строк, которые будут переданы в качестве аргументов функции mainновой программы. Выполнение системного вызова ехес приводит к тому, что в адресное пространство порожденного процесса загружается но­вая выполняемая программа и запускается с адреса, соответствующего входу в функциюmain. Другими словами, это приводит к замене текущего программно­го сегмента и текущего сегмента данных, которые были унаследованы при вы­полнении вызоваfork, на новые соответствующие сегменты, заданные в файле. Прежние сегменты теряются. Это эффективный метод смены выполняемой про­цессом программы, но не самого процесса. Файлы, уже открытые до выполнения примитива ехес, остаются открытыми после его выполнения.

В следующем примере пользовательская программа, вызываемая как команда shell, выполняет в отдельном процессе стандартную командуshellls, которая выдаёт на экран содержимое текущего каталога файлов.

if (fork ()==(0) wait(0); /* родительский процесс */

else execl("ls", "Is", 0); /* порождённый процесс */

Таким образом, с практической точки зрения процесс в UNIXявляется объектом, создаваемым в результате выполнения функцииfork(). Каждый процесс, за исключением начального (нулевого), порождается в результате запуска дру­гим процессом операции fork(). Каждый процесс имеет одного родителя, но мо­жет породить много процессов. Начальный (нулевой) процесс является особенным процессом, который создается в результате загрузки системы. После порожде­ния нового процесса с идентификатором 1 нулевой процесс становится процес­сом подкачки и реализует механизм виртуальной памяти. Процесс с идентифика­тором 1, известный под именемinit, является предком любого другого процесса в системе и связан с каждым процессом особым образом.

По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,

REM Следующие две команды будут дублироваться на экране … DIR C:\ ECHO OFF REM А остальные уже не будут DIR D:\

Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:

ECHO ON REM Команда DIR C:\ дублируется на экране DIR C:\ REM А команда DIR D:\ - нет @DIR D:\

Таким образом, если поставить в самое начало файла команду

@ECHO OFF

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

ECHO сообщение

Например,

@ECHO OFF ​ECHO Привет!

Команда ECHO. (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку.

Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.

Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:

@ECHO OFF ECHO Привет! > hi.txt ECHO Пока! >> hi.txt

С помощью такого метода можно, скажем, заполнять файлы-протоколы с отчетом о произведенных действиях. Например:

@ECHO OFF REM Попытка копирования XCOPY C:\PROGRAMS D:\PROGRAMS /s REM Добавление сообщения в файл report.txt в случае REM удачного завершения копирования IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt

Использование параметров командной строки

При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.

Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 - значения первых девяти параметров командной строки соответственно, а вместо %* - все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:

@ECHO OFF CLS ECHO Файл %0 копирует каталог %1 в %2 XCOPY %1 %2 /S

Если запустить его из командной строки с двумя параметрами, например

Copier.bat C:\Programs D:\Backup

то на экран выведется сообщение

Файл copier.bat копирует каталог C:\Programs в D:\Backup

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 - пустая строка.

Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:

My.bat p1 p2 p3

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.

При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.
Например, в следующей команде:

SHIFT /2

параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в следующей таблице:

Таблица 2.1. Операторы для заменяемых параметров

Операторы

Описание

Переменная %n расширяется до полного имени файла

Из переменной %n выделяется только имя диска

Из переменной %n выделяется только путь к файлу

Из переменной %n выделяется только имя файла

Из переменной %n выделяется расширение имени файла

Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла

Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

Данные синтаксические конструкции можно объединять друг с другом, например:

%~DPn - из переменной %n выделяется имя диска и путь,
%~NXn - из переменной %n выделяется имя файла и расширение.

Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc (%1=Рассказ.doc). Тогда применение операторов, описанных в таблице выше, к параметру %1 даст следующие результаты:

%~F1=C:\TEXT\Рассказ.doc %~D1=C: %~P1=\TEXT\ %~N1=Рассказ %~X1=.doc %DP1=C:\TEXT\ %NX1=Рассказ.doc

В большинстве операционных систем Linux, bash является принятым по умолчанию интерпретатором командной строки. Для определения текущего интерпретатора введите следующую команду:

$ echo $SHELL
/bin/bash

В этом примере используется интерпретатор командной строки bash. Существует множество других командных интерпретаторов. Для активизации другого интерпретатора можно ввести его имя в командной строке (ksh, tcsh, csh, sh, bash и т.д.).

В большинстве полнофункциональных операционных систем Linux предоставляются на заметку все описанные здесь командные интерпретаторы. Но в небольших операционных системах могут быть предоставлены один или два интерпретатора.

Проверка доступности интересующего интерпретатора командной строки

Самым простым способом проверки доступности интересующего командного интерпретатора является ввод его имени в командной строке. Если интерпретатор запустился, он доступен.

Существует несколько причин для выбора альтернативных командных интерпретаторов.

  • Привычка работать в системах UNIX System V (во многих из них по умолчанию применяются интерпретатор ksh) или в системах компании Sun Microsystems и других системах на базе Berkeley UNIX (в них часто используется csh). В таком случае применение этих интерпретаторов командной строки окажется более удобным.
  • Необходимость запуска сценариев, которые создавались для определенного командного интерпретатора.
  • Возможности альтернативного командного интерпретатора могут оказаться более предпочтительными. Например, один из членов группы пользователей Linux предпочитает применять ksh, так как его не устраивает способ создания псевдонимов в bash.

Хотя большинство пользователей предпочитает работать в одном командном интерпретаторе, полученные навыки помогают научиться работать и в других интерпретаторах командной строки , изредка заглядывая в справочное руководство (например, с помощью команды manbash). Большинство используют bash, так как нет причин переходить на другой интерпретатор.

Использование Bash и ch

Название bash является аббревиатурой от Bourne Again SHell. Эта аббревиатура указывает на то, что bash наследует интерпретатор Bourneshell (команда sh), созданный Стивом Борном (Steve Bourne) из AT&TBell Labs. Брайан Фокс (Brian Fox) из Free Software Foundation создал bash в составе проекта GNU. В дальнейшем разработка перешла в руки Чета Рами (Chet Ramey) в Case Western Reserve University.

Интерпретатор bash содержит возможности, которые разрабатывались для интерпретаторов sh и ksh во времена ранних версий UNIX, а также ряд возможностей интерпретатора csh.

Можно рассчитывать, что в большинстве систем Linux, кроме специализированных (например, встраиваемых или загружающихся с внешнего диска), интерпретатор bash применяется по умолчанию. В специализированных системах может потребоваться командный интерпретатор меньшего объема, что подразумевает и ограничение возможностей.

Большинство примеров в этой статье рассчитано на использование bash.

Интерпретатор bash может запускаться в различных режимах совместимости, имитируя поведение других командных интерпретаторов. Он может имитировать поведение Bourne shell (sh) или командного интерпретатора, совместимого со стандартами POSK (bash — posix).

В результате интерпретатор bash с большей вероятностью сможет успешно читать файлы конфигурации и запускать сценарии, написанные специально для других командных интерпретаторов.

Все предоставляемые операционные системы Linux по умолчанию используют интерпретатор bash, кроме операционных систем, загружаемых со сменных носителей, в которых по умолчанию применяется интерпретатор ash.

Использование tcsh (и более раннего интерпретатора csh)

Командный интерпретатор tcsh является реализацией интерпретатора Сshell (csh) с открытым исходным кодом. Интерпретатор csh был создан Биллом Джоем (Bill Joy) и используется по умолчанию практически во всех системах Berkeley UNIX (такие системы распространялись компанией Sun Microsystems).

Многие возможности csh, например редактирование командной строки и методы управления историей команд, были реализованы в интерпретаторе tcsh и в других командных интерпретаторах. Так же как команда sh запускает интерпретатор bash в режиме совместимости с интерпретатором sh, команда csh запускает интерпретатор tcsh в режиме совместимости с интерпретатором csh.

Использование интерпретатора ash

Интерпретатор ash является облегченной версией интерпретатора Berkeley UNIX sh. Он не содержит многих базовых функций и не предоставляет таких возможностей, как история команд.

Интерпретатор ash хорошо подходит для применения во встраиваемых системах с ограниченными системными ресурсами. В операционной системе FedoraCore 4 интерпретатор ash на порядок меньше интерпретатора bash.

Использование zsh

Интерпретатор zsh является еще одним клоном интерпретатора sh. Он соответствует требованиям стандарта POSIX (как и bash), но обладает другими возможностями, включая проверку орфографии и иной подход к редактированию командной строки. Интерпретатор zsh использовался по умолчанию в первых операционных системах MacOS X, но в современных системах по умолчанию применяется интерпретатор bash.

В этом разделе описаны команды и символы, имеющие специальное значение, которые позволяют:

  • - находить с помощью шаблона и манипулировать группами файлов;
  • - запускать команду в фоновом режиме или в определенное время;
  • - выполнять последовательно группу команд;
  • - перенаправлять стандартные ввод и вывод;
  • - завершать работающие программы.

Интерпретатор SHELL является оболочкой всей операционной системой и выполняет интерфейсные функции между пользователем и ОС. Он перехватывает и интерпретирует все команды пользователя, формирует и выводит ответные сообщения.

Помимо запуска на выполнение стандартных команд UNIX и исполняемых файлов, интерпретатор включает собственный язык, который по своим возможностям приближается к высокоуровневым языкам программирования. Этот язык позволяет создавать программы (shell-файлы, скрипты), которые могут включать операторы языка и команды UNIX. Такие файлы не требуют компиляции и выполняются в режиме интерпретации, но они должны обладать правом на исполнение (устанавливается с помощью команды chmod ).

Общение пользователя с командным интерпретатором осуществляется вводом команд с клавиатуры после появления промпта (приглашения), обычно, символа "$". Введенную последовательность символов интерпретатор будет рассматривать либо как имя внутренней команды, либо как имя исполняемого файла.

Процедуре (скрипту) shell могут быть переданы аргументы при запуске. Каждому из первых девяти аргументов ставится в соответствие позиционный параметр от $1 до $9 ($0 - имя самой процедуры), и по этим именам к ним можно обращаться из текста процедуры.

Прежде, чем начать рассмотрение некоторых операторов shell, следует обратить внимание на использование в командах некоторых символов.

Ниже приведены метасимволы, используемые shell :

* ? - позволяют указывать сокращенные имена файлов при поиске по шаблону;

& - означает, что команда будет выполняться в фоновом режиме;

; - разделяет команды в командной строке;

Отменяет специальное значение символов, таких как *, ?, [, ], &, ;, <,

"..." - отменяют значение пробела как разделителя и специальное значение

всех символов;

"..." - отменяют значение пробела как разделителя и специальное значение всех символов, за исключением $ и;

> - перенаправляет вывод команды в файл;

< - перенаправляет ввод команды из файла;

>> - перенаправляет вывод команды, который должен быть добавлен в

конец существующего файла;

| - создает канал, направляющий вывод одной команды во ввод другой

`...` - используется в паре; позволяет использовать вывод команды как

аргументы в командной строке;

$ - используется с позиционными параметрами и определенными поль-

зователем переменными, также используется по умолчанию в

качестве подсказки shell .

Кроме того, для удобства работы с файлами почти все командные интерпретаторы интерпретируют символы "?" и "*", используя их как шаблоны имен файлов (т.н. метасимволы ):

Например: *.c - задает все файлы с расширением "c";

pr???.* - задает файлы, имена которых начинаются с "pr", содержат пять символов и имеют любое расширение.

Переменные языка shell

Язык shell позволяет работать с переменными (без предварительного объявления). Имена переменных начинаются с буквы и могут включать буквы и цифры. Обращение к переменным начинается со знака "$".

Пример. Переход к начальному каталогу пользователя: cd $HOME

Оператор присваивания . Присвоение значений переменным осуществляется с помощью оператора `=" без пробелов.