Командный синтаксис. Элементарные команды

На примере уже описанной команды dir рассмотрим правила записи команд в системе MS-DOS. Указанную команду можно представить в общем виде как dir [путь]

Как вы понимаете, в таком виде эту команду вводить в компьютер не стоит. Эта запись определяет только синтаксис команды, она возможна на бумаге, но не в командной строке. Начинается запись команды с ее имени (в данном примере - это имя dir). За именем команды следует пробел, а затем имя диска, которое обозначено как d:. Поскольку в некоторых случаях диск можно не указывать (см. примеры выше), эта часть команды заключена в квадратные скобки . Эти скобки показывают, что данный элемент команды может отсутствовать. Сами квадратные скобки при вводе команды набираться, естественно, не должны. За именем диска в общей записи следует указание пути. Его также не обязательно указывать, в этом случае на экран будет выведено содержимое корневого каталога.

В состав команд MS-DOS могут входить так называемые переключатели, которые задают условия исполнения команды. Так, если следом за командой dir набрать символы /Р, то будет выполнен постраничный вывод содержимого каталога. Этот режим удобен в случае больших каталогов, содержимое которых может занять несколько экранных страниц. Для каталога SCHOOL команда постраничного вывода будет иметь вид: dir c:school/p

Кроме переключателя Р, в команде dir возможен переключатель W, задающий вывод только имен файлов - по пять имен в каждой строке. Возможность наличия переключателей в команде отражается записью вида: dir [путь]

Любую команду MS-DOS можно условно представить в виде:

Имя-команды [аргумент]... [переключатель]...

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

Создание и удаление каталогов

Вам уже знакомы несколько команд работы с каталогами: dir, tree, cd. Дополним этот список командами, предназначенными для создания и удаления каталогов. Это команды md и rd соответственно. Команда md может записывать-ся как mkdir, что означает сокращение слов «make directory» - создать директорию. Команда rd также может записываться в более подробном виде rmdir (сокращение от «remove directory» - удалить директорию). Синтаксис команд md и rd одинаков:

md и rd

С помощью команды md можно создавать древовидную структуру каталогов, указывая путь к новому каталогу. Приведем примеры:

Создать каталог GRAPH3 в текущем каталогс;

Создать каталог REST в корневом каталоге диска С.

Команда rd позволяет удалять каталоги, кроме текущего каталога. Например, чтобы удалить каталог HOBBY на диске С, нужно набрать:

Отметим, что каталог, удаляемый командой rd, должен быть пустым, то есть предварительно в нем нужно удалить все файлы и подкаталоги, причем процедуру удаления нужно начинать с нижайшего уровня (об операциях с файлами речь пойдет в следующем параграфе). В версиях MS-DOS, начиная с 6.0, предусмотрено удаление каталогов вместе со всем содержимым. Для этого нужно использовать команду deltree, которая имеет формат, аналогичный командам md и rd:

deltree [путь]

Все удаления производятся с подтверждением, если же в команде указать параметр /у, то подтверждения не требуется. Когда нужно удалить каталог (например, EXERC), содержащийся в текущем каталоге, вы просто набираете deltree exerc

Перед тем, как удалить каталог, система попросит вас подтвердить удаление. Введите Y (Yes) и нажмите клавишу Enter.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

Внутренние команды операционной системы

В файле COMMAND.COM описаны правила выполнения компьютером простых, наиболее часто используемых команд. Команды DOS, которые как коды записаны в файл COMMAND.COM, называютсявнутренними командами. Данные из файла COMMAND.COM загружаются в память на весь сеанс работы, поэтому к выполнению внутренних команд система приступает немедленно. Вот примеры внутренних команд DOS, коды выполнения которых описаны в файле COMMAND.COM.

Команда Описание внутренней команды
cd Вывести имя текущего каталога или меняет каталог
copy Копировать файл или несколько файлов в указанное место
date Вывести текущую дату и при необходимости ее изменить
del, erase Удалить указанные файлы
dir Вывести список файлов и подкаталогов в текущем или указанном каталоге
exit Прекратить работу командного процессора COMMAND.COM и передать управление программе, из которой он был запущен
md, mdir Создать каталог или подкаталог
path Указать каталоги, где DOS должна отыскивать исполняемые файлы (программы)
rd, rmdir Удалить каталог (remove directory)
ren, rename Изменить имя выбранного файла или файлов
time Вывести системное время и при необходимости изменить его
type Вывести содержимое указанного файла
verify Проверить и сообщить результаты записи файлов на диск

Через запятую написаны команды-дубликаты и сокращенные варианты написания. Внутренняя команда не требует уточнения, кто ее будет выполнять.

Внешние команды DOS

В комплект DOS помимо системных файлов входит большой набор программ, записанных в отдельные файлы с расширением.corn, .exe. Программа из такого файла только по требованию команды специально за­гружается в память с диска. На это требуется время, поэтому вызов, указание на имя файла с программой DOS, называется внешней командой DOS. Внешняя команда - это имя программы, которая будет выполнять ожидаемое действие, в команде не указывается расширение файла.

Файл COMMAND.COM принимает с клавиатуры разные команды DOS, но сам выполняет только внутренние команды и командные файлы наборов команд. Встретившись с командой, которую он не готов выпол­нить своими внутренними силами, файл COMMAND.COM просмотрит список путей, ведущих в каталоги, и загрузит с диска файл соответствующей программы для выполнения.

Программы выполнения внешних команд поставляются вместе с DOS, хранятся на диске в каталоге DOS как обычные файлы и совершают действия обслуживающего характера.

Подача команды

Команда - это распоряжение о выполнении действий, операций.

1. Команда общего назначения может быть набрана на клавиатуре латинскими буквами, в процессе набора ее текст отображается на экране в командной строке приглашения DOS.

2. Команда может быть закреплена за клавишей клавиатуры (горячая клавиша).

3. Команду в программах с оконным графическим оформлением можно описать, подбирая ее параметры курсором клавиатуры или мыши по графическому отображению на экране: меню, окнам, которые предоставляет программа.

Структура, синтаксис команды

Выше были приведены только имена команд, но в большинстве случаев команда только начинается с имени, а дальше должны быть записаны дополнительные элементы. Правила написания и порядок следования элементов команды называютсясинтаксисом команды.

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

не архивировать (d)

неизменяемый (i)

журналирование данных (j)

безопасное удаление (s)

вершина иерархического дерева (T)

запрет слияния в конце файла (t)

неудаляемый (u)

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

Синтаксис команды

Формат этой команды следующий:

cmp OPTIONS... FROM-FILE

Имя файла «-» означает стандартный ввод. «cmp» также использует стандартный ввод, если один из файлов не задан.

Выходной статус 0 означает, что различий не найдено, 1 - найдено, 2 - обнаружена ошибка.

Печатает различающиеся символы. Отображает контрольные символы символом «^» и буквой алфавита, а также предваряет символы с установленным высшим битом символом «-M» (обозначающим «мета»).

Ignore-initial=BYTES

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

Печатает все различающие символы. Отображает контрольные символы символом «^» и буквой алфавита, а также предваряет символы с установленным высшим битом символом "-M" (обозначающим «мета»).

Quite или -s или --silent

Ничего не печатает; только возвращает выходной статус, показывающий отличаются ли файлы.

Печатает смещение (десятичное) и значение (восьмеричное) всех различающихся байтов.

V или --version

Выдаёт номер версии cmp.

file - команда Unix, предназначенная для определения типа файла.

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

file [-zL] [-f file] file ...

Ключи

F file: Считывает из указанного файла список файлов для проверки.

L: Определяет тип файлов, указанных по ссылке.

Z: Определяет тип файлов, находящихся в сжатых файлах.

ln - команда UNIX, устанавливающая связь между файлом и именем файла. Формат команды:

ln файл1 файл2

# создаётся «жёсткая» ссылка (hard link) ln -s файл1 файл2

# создаётся «символическая» ссылка (symbolic link)

Эта команда создаёт жёсткую ссылку на файл «файл1», которая будет выглядеть как «файл2». Таким образом для файловой системы исходный файл «файл1» и ссылка на него «файл2», на самом деле физически будут являться одним и тем же файлом. Жесткие ссылки не могут указывать на файлы в других файловых системах.

mv (от англ. move) - утилита в UNIX и UNIX-подобных системах, используется для перемещения или переименования файлов или каталогов.

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

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

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

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

Ключи, использующиеся с mv:

–f, не запрашивать подтверждения операций.

–i, выводить запрос на подтверждение операции, когда существует файл, в который происходит переименование или перемещение.

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

rm (от англ. remove) - утилита в UNIX и UNIX-подобных системах, используемая для удаления файлов из файловой системы. Ключи, использующиеся с rm:

R - обрабатывать все вложенные подкаталоги. Данный ключ необходим, если удаляемый файл является каталогом, пусть даже пустым. Если удаляемый файл не является каталогом, то ключ -r не влияет на команду rm.

I - выводить запрос на подтверждение каждой операции удаления.

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

rm часто является синонимом команды rm -i, то есть команда по умолчанию запрашивает

подтверждение перед удалением файлов, что позволяет предотвратить их случайное удаление. Если пользователю нужно удалить большое количество файлов без подтверждения операции, можно отменить действие ключа -i с помощью добавления ключа -f.

chmod - изменение прав доступа к файлам и папкам. Название происходит от программы ОС Unix chmod, которая, собственно, изменяет права доступа к файлам, каталогам и символическим ссылкам.

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

Для понимания сути задания прав в Unix-like системах, нужно знать представление чисел в восьмеричной и двоичной системах счисления

юзер группа остальные

111 101 101 rwx r-x r-x u g o

Пример символьной записи "rwxr-xr-x".

Примером числовой записи может служить "755", которая эквивалентна записанной выше строковой записи: каждое право имеет числовой код и может быть задано вручную:

400 - владелец имеет право на чтение;

200 - владелец имеет право на запись;

100 - владелец имеет право на выполнение;

40 - группа имеет право на чтение;

20 - группа имеет право на запись;

10 - группа имеет право на выполнение;

4 - остальные имеют право на чтение;

2 - остальные имеют право на запись;

1 - остальные имеют право на выполнение.

Суммировав эти коды можно получить символьную запись. Например, chmod 444 {имяфайла}: 400+40+4=444 - все имеют право только на чтение.

Помимо стандартных "rwx" значений команда CHMOD осуществляет еще управление битами SGID , SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно.

Для SUID - вес 4000, а для SGID - 2000.

Пример chmod 4444 {имяфайла} - все имеют право только на чтение, но запускаться файл на исполнение будет с правами владельца. Для папки: установка SGID приведет к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сам каталог, а не к основной группе владельца, как это происходит по умолчанию. SUID для каталога не имеет смысла.

t-бит используется с каталогами. Когда t-бит для каталога не установлен, файл в данном

В данной статье рассматривается общий синтаксис команд оболочки (shell ) и на примере нескольких элементарных команд показывается его использование.

Формально командный синтаксис определяется так:

Utility_name

Здесь, utility_name означает имя команды или утилиты , options — принимаемые командой ключи или опции , а operands — аргументы команды. Квадратные скобки вокруг options и operands показывают, что эти параметры необязательны и могут отсутствовать.

Запишем наше «определение» более развёрнуто:

Utility_name [-a] [-b] [-c optarg] [-d|-e] [-foptarg]

Ключ представляет собой символ «минус», за которым следует одиночная буква или цифра. Несколько ключей могут быть объединены под одним символом «минус». Например, ключи -a и -b можно записать как -ab . Некоторые опции могут содержать дополнительные аргументы (как optarg в -c и -f), которые записываются за этой опцией либо сразу (-f), либо отделяются от неё пробелом или символом табуляции (-c). Если опция принимает несколько аргументов, то они записываются либо через запятую (optarg1,optarg2), либо в кавычках через пробел ("optarg1 optarg2"). Некоторые ключи могут исключать друг друга. В примере выше это -d и -e , символ вертикальной черты говорит о том, что эти ключи взаимоисключающие и использовать нужно только один из них. Если такие ключи в командной строке заданы совместно, то, как правило, действующим окажется тот, который встретился последним. Наконец, аргументы команды, если они есть, стоят после всех опций. В примере выше символ многоточия показывает, что аргументов может быть несколько. В таком случае они разделяются пробелами или табуляцией.

Для обозначения окончания опций может быть использован специальный разделитель -- . Всё, что указано после него, воспринимается командой как её аргумент, даже если он начинается с символа «минус», который в прочих случаях интерпретируется как символ опции. Например:

Command -abc -d optarg -- -operand1 operand2

Здесь -operand1 выступает как аргумент команды, а не как её опция, несмотря на то, что начинается с «минуса».

Если в качестве аргумента команды, который представляет собой имя файла, используется одиночный символ «минус», то он обозначает либо стандартный ввод, либо стандартный вывод в зависимости от контекста использования команды.

Большинство утилит, разработанных в рамках проекта GNU , поддерживают помимо «коротких» однобуквенных ключей так называемые «длинные» опции, которые представляют собой одно или несколько слов, разделённых дефисом. Предваряются «длинные» опции двумя символами «минус». Общий синтаксис с использованием «длинных» опций можно записать так:

Utility_name [--longopt1] [--logopt2=optarg1] [--longopt3 optarg2]

Правила записи аргументов опций отличаются от «коротких» тем, что совместное написание опции и её аргумента не допускается, а требуется отделение аргумента либо пробелом (как в --longopt3), либо символом «равно» (как в --longopt2). Эти формы записи являются равнозначными.

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

Итак, покончив с скучной теорией, посмотрим, как всё это выглядит на практике.

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

Разберём такой пример диалога оператора с системой:

$ whoami bofh $ hostname -s lucky $ uname -sr FreeBSD 7.1-STABLE $ echo Hello, world. Hello, world.

В данном примере знак доллара ($) означает приглашение (prompt ) командной оболочки, жирным текстом выделены команды, которые вводил оператор, а простым текстом показан вывод системы.

В первой команде (whoami) оператор пытается выяснить как его зовут, вернее под каким пользователем запущен данный сеанс работы с оболочкой. Как видно, система ответила именем пользователя bofh . Команда whoami не требует никаких параметров, у неё нет ключей и аргументов. Можно попытаться их ей передать:

$ whoami -h whoami: illegal option -- h usage: whoami $ whoami sometext usage: whoami

Как видно, утилита whoami любезно сообщила, что не знает, что за ключ -h оператор ей задал. А строка usage: whoami подсказывает командный синтаксис.

Вторая команда (hostname) позволила оператору узнать, на каком хосте запущена оболочка. При этом оператор указал ключ -s , который в данном случае предписывает утилите hostname выводить только «короткое» имя хоста, то есть без доменной части (проще говоря, до первой точки).

Выполнив третью команду (uname), оператор смог узнать, с какой операционной системой он имеет дело, а также версию ОС. Записываться ключи могут вместе, что продемонстрировано в примере выше, либо по отдельности, и тогда перед каждым ключом должен быть символ «минус»:

$ uname -s -r FreeBSD 7.1-STABLE

Наконец, четвёртая команда (echo) просто напросто выводит переданные ей аргументы.

Как мы видим, команды могут иметь множество разных ключей и аргументов. Различается их количество от утилиты к утилите, различается их значение, опции могут быть «короткие» и «длинные» и т.д. Мало того, в различных операционных системах одна и та же команда может иметь разный набор ключей, что ещё больше может запутать.

Вполне естественно, что запомнить все параметры тех или иных команд не представляется возможным. Это и не нужно. Существует способ быстро освежить в памяти синтаксис и ключи той или иной команды — использование опций -h и/или --help , если утилита таковые поддерживает. Например, выше в примере команды whoami в ОС FreeBSD было показано, что эта команда не знает ни про какие ключи и к тому же довольно немногословна. В ОС GNU/Linux вывод выглядит несколько иначе и более развёрнуто:

$ whoami -h whoami: invalid option -- "h" Try `whoami --help" for more information. $ whoami --help Usage: whoami ... Print the user name associated with the current effective user ID. Same as id -un. --help display this help and exit --version output version information and exit

Как правило, команда, поддерживающая «длинные» ключи, практически всегда имеет опцию --help . Но, как было сказано выше, эта опция позволяет всего лишь освежить в памяти способы использования этой команды и её параметры. О том, где найти более подробную информацию о той или иной команде, речь пойдёт в .

Any sequence of characters. A scanset data type is a generalized type "s" (string) data type. In fact, the type "s" directive can be expressed by the following exclusive scanset:

%[^ \t\n]

This says that all non-blank, non-tab and non-newline characters will be consumed. That is, the scan will end on the first white space character in the log entry. (See Escape characters for details on specifying escape characters in a format command.)

In an inclusive scanset, characters from a log entry will be consumed until a character is encountered that is not in the scanset. In an exclusive scanset (for example, one that has a "^" (circumflex) character immediately following the left bracket), characters from a log entry will be consumed until a character is encountered that is in the scanset.

A scanset allows a single scan directive to consume multiple log entry fields. For example, a scanset that you might use frequently is one that is to “read all the remaining characters in an entry":

That is, consume everything from the current position in an entry up to the newline character, which marks the end of the entry.

A scanset directive can also be used to terminate a scan before a simple type "s" variable would, that is, when a white space character is found. For example, suppose a log entry has embedded within it either one of the following two field sequences:

Error code:24 Warning code:16

If you want only to extract the numeric code itself, the following directives could be used:

%*[^:]:%d

This format description consumes and discards (field is suppressed) all characters until a colon is found (exclusive scanset), then consumes and discards the colon itself (an embedded literal) and finally consumes and stores the numeric code.

As with a string data type, if you wish to consume more than 31 characters with a scanset directive, you must include a maximum width option in the directive. For example, to consume up to 60 characters from the current location up to the end of the entry use:

%60[^\n]

Some operating systems support the use of a "-" (dash) to represent a range of characters, for example:

This example includes all lowercase letters in the scanset. The character that precedes the dash must be lexically less than the character following it otherwise the dash stands for itself. Also, the dash stands for itself whenever it is the first or last character in the scanset.

To include the right bracket in an inclusive scanset, it must immediately follow the opening left bracket. To include the right bracket in an exclusive scanset, it must immediately follow the circumflex character. In both cases, a right bracket so placed is not considered the closing right bracket of the scanset.



 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!