ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
К некоторым файлам из своей структуры операционная система допускает прямое обращение пользователя с целью выполнить какое-нибудь действие, операцию. Действие будет выполнено с помощью программ, записанных в этих файлах, а указаниена такое действие называетсякомандой
Внутренние команды операционной системы
В файле 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. Команду в программах с оконным графическим оформлением можно описать, подбирая ее параметры курсором клавиатуры или мыши по графическому отображению на экране: меню, окнам, которые предоставляет программа.
Структура, синтаксис команды
Выше были приведены только имена команд, но в большинстве случаев команда только начинается с имени, а дальше должны быть записаны дополнительные элементы. Правила написания и порядок следования элементов команды называютсясинтаксисом команды.
Команда может содержать элементы четырех типов:имя команды (обязательно в начале),параметры, ключи (переключатели) изначения. Они определяют вариант выполнения команды: кто (коды какой программы, команды), над каким объектом и как проделает требуемые действия. Элементы команды разделяются пробелами.
Прежде чем начать изучение команд, необходимо познакомиться с некоторыми первоначальными сведениями, которые необходимы для дальнейшего изучения командной строки.
Синтаксис команд командной строки.
Каждая команда имеет определенную синтаксическую структуру, согласно которой пользователь вводит команду в командной строке. Для примера, возьмем команду CD, которая используется для изменения текущего каталога. Она имеет следующий синтаксис cd [диск:][путь] [..]. Большинство команд командной строки имеет различные параметры и ключи. Как правило, ключ обозначается буквой латинского алфавита с предшествующей вертикальной косой чертой «/» (в некоторых командах ключи могут начинаться со знака минус «-»). В нашем случае команда CD имеет один ключ . [диск:][путь] и [..] являются параметрами команды CD. Если какие-нибудь ключи и параметры записываются в квадратных скобках, то применение их в команде необязательно. Например, в нашем случае у команды CD ключ и параметры являются необязательными, т.е. команда CD может употребляться без них. Для примера, возьмем другую команду XCOPY, которая позволяет копировать файлы и папки. Она имеет следующий синтаксис: xcopy источник [результат] ] ] [{/a|/m}] ][+[файл3]] [{/y|/-y}] . Как видите, команда имеет много различных ключей и параметров. Однако только один параметр является обязательным: «источник». При вводе той или иной команды в командной строке необходимо придерживаться синтаксиса, т.е. вводить ключи и параметры (если они необходимы) в том порядке, в котором они представлены в синтаксической структуре команды.
Регистр при наборе команд.
Вы можете набирать имена команд, параметров и ключей в любом регистре, т.к. он не имеет значения при работе в командной строке.
Работа с файловой системой.
Первые уроки по командной строке будут посвящены работе с файловой системой Windows, т.е. работе с файлами и папками. Поэтому следует сказать несколько слов об особенностях определения путей к файлам и папкам. Путь к файлу записывается следующим образом: [диск][путь\]имя_файла. Таким образом, получается что обязательным параметром является только «имя_файла». При этом, если перед именем файла стоит знак «\», то маршрут к этому файлу вычисляется от корневого каталога, если имя файла употребляется без знака «\», то маршрут к нему вычисляется от текущего каталога. Для примера, создадим на диске «С» файл «text.txt». Запустим командную строку. По умолчанию, текущим каталогом является «С:\Users\имя_пользователя». Для того чтобы открыть какой-нибудь файл с помощью командной строки, необходимо просто записать название этого файла. Однако, здесь следует правильно отобразить маршрут к этому файлу. Если мы просто наберем text.txt , то на экране появится сообщение "«text.txt» не является внутренней или внешней командной, исполняемой программой или пакетным файлом". Дело в том, что файл «text.txt» находится в корне диска «С», а у нас текущим каталогом является папка «имя_пользователя» (в моем случае "вадим"), находящаяся в папке «Users» на диске «С». Если нам необходимо, чтобы маршрут к файлу отсчитывался от корня диска, перед файлом необходимо поставить знак «\»: \text.txt
Теперь перейдем в корень диска «С» (это можно сделать с помощью команды CD\). Сейчас для открытия файла «text.txt» достаточно написать в командной строке text.txt без использования знака «\», поскольку текущим каталогом является диск «С», а файл как-раз расположен в корне диска «С»
Теперь создадим в папке «Users» файл «file.txt» и изменим текущий каталог на «С:\Users\имя_пользователя» (в моем случае «имя_пользователя» - «вадим»). Сделать это можно с помощью команды: cd users\имя_пользователя . Файл «file.txt» находится ни в корне диска «С», ни в текущем каталоге, поэтому для его открытия необходимо указать не только название файла, но и каталог, в котором он находится (в нашем случае «Users»). Если мы запишем просто users\file.txt , то на экран будет выведено сообщение «Системе не удается найти указанный путь», поскольку эта самая «система» пытается найти файл «file.txt» в папке «Users», начиная от текущего каталога, т.е. по маршруту C:\Users\вадим\Users\file.txt. Если же мы запишем в командной строке \users\file.txt , то система будет искать файл «file.txt» в папке «Users», начиная от корня диска «С», т.е. по маршруту «C:\Users\file.txt», который является правильным.
Если файл расположен на другом диске, то для доступа к нему необходимо указывать полный путь с указанием имени диска. Например, создадим на диске «D» папку «FOLDER», а в ней файл «f1.txt». Тогда команда для открытия файла «f1.txt» будет выглядеть так: d:\folder\f1.txt
Для обозначения текущего каталога и 3-х его верхних уровней используются особые обозначения. Так текущий каталог обозначается символом «.» (точка), его родительский каталог – символом «..», каталог 2-го уровня – символом «…», каталог 3-го уровня – символом «….». Эти обозначения используются в некоторых командах. Например, команда CD.. осуществляет переход в родительский каталог.
Использование групповых символов.
При работе в командной строке имена файлов можно заменять групповыми символами, «*» (звездочкой) и «?» (вопросительным знаком). Символ «*» заменяет любое количество символов в названии файла, а символ «?» обозначает присутствие или отсутствие одного символа в названии файла. Например, запись «*.txt» обозначает все текстовые файлы. Запись «file.*» обозначает файлы с именем «file» и любым расширением. Запись «*.*» обозначает все файлы. Запись «fi?e.txt» может обозначать любой текстовый файл, с названием file.txt, fie.txt, fife.txt, fi4e.txt и т.д.
При использовании имен файлов, состоящих из более чем одного слова, необходимо заключать их в двойные кавычки. Например, создадим на диске «С» папку «новая папка», а в ней файл «новый документ». Тогда для открытия этого файла, путь к нему необходимо заключить в двойные кавычки.
На примере уже описанной команды 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.
) широко используется как стандартная нотация, но в первые дни люди экспериментировали. На некоторых машинах команда sort больше не поддерживает нотацию + . Однако различные команды (в частности, ar и tar) принимают элементы управления без символа префикса - и dd (упоминаемый Alok в комментарии) использует другое соглашение вообще.
Соглашение GNU об использовании " -- " для длинных опций (поддерживается getopt_long(3)) было изменено с использованием " + ". Конечно, программное обеспечение X11 использует одну тире перед многосимвольными опциями. Итак, все это коллекция исторических реликвий, когда люди экспериментировали с тем, как лучше всего справиться с ней.
POSIX документирует Соглашения об утилитах , за которые он работает, за исключением случаев, когда исторический прецедент сильнее.
[В свое время SO 367309 содержался следующий материал в качестве моего ответа. Первоначально он был задан в 2008-12-15 02:02 FerranB , но впоследствии был закрыт и удален.]
Сколько различных типов опций вы узнаете? Я могу думать о многие, в том числе:
Для параметров, принимающих необязательный аргумент, иногда необходимо присоединить аргумент (co -p1.3 rcsfile.c), иногда он должен следовать знаком "=". POSIX не поддерживает дополнительный аргументы осмысленно (POSIX getopt() допускает их только для последнего в командной строке).
Все разумные системы опций используют опцию, состоящую из двойной панели (" -- ") только для обозначения "конца опций" - следующие аргументы: "необязательные аргументы" (обычно имена файлов, POSIX называет их "операндами") даже если они начинаются с тир. Имейте в виду, что если для параметра -- предшествует опция, требующая аргумента, -- будет рассматриваться как аргумент опции, а не как маркер "конца опций".)
Многие, но не все программы принимают одиночную тире в качестве имени файла для обозначения стандартный вход (обычно) или стандартный вывод (иногда). Иногда, как с GNU " tar ", оба могут использоваться в одной командной строке:
... | tar -cf - -F - | ...
Первая персональная тире означает "write to stdout"; второй означает "читать файл" имена из stdin ".
Некоторые программы используют другие соглашения - то есть параметры, которым не предшествует тир. Многие из них относятся к самым старым дням Unix. Например, "tar" и "ar" оба принимают параметры без тире, поэтому:
Tar cvzf /tmp/somefile.tgz some/directory
Команда dd использует opt=value исключительно:
Dd if=/some/file of=/another/file bs=16k count=200
Некоторые программы позволяют чередовать опции и другие аргументы полностью; компилятор C, make и утилиты GNU работают без POSIXLY_CORRECT в среде - примеры. Многие программы ожидают параметры, предшествующие другим аргументам.
Обратите внимание, что git и другие команды VCS часто используют гибридную систему:
Git commit -m "This is why it was committed"
В качестве одного из аргументов есть подкоманда. Часто будут добавлены дополнительные "глобальные" параметры, которые могут быть указаны между командой и подкомандой. В POSIX есть примеры; sccs команда находится в этой категории; вы можете утверждать, что некоторые другие команды, которые запускают другие команды, также относятся к этой категории: nice и xargs spring, чтобы учесть POSIX; sudo является примером, отличным от POSIX, как и svn и cvs .
У меня нет сильных предпочтений между различными системами. когда существует несколько вариантов, а затем одиночные буквы с мнемоническим значением удобны. GNU поддерживает это, но рекомендует многобуквенные опции, которым предшествует двойная тире.
Есть некоторые вещи, на которые я возражаю. Одно из худших - одно и то же вариантная буква используется с различными значениями в зависимости от того, что другое перед ним предшествуют буквы опций. В моей книге, что нет-нет, но я знаю программного обеспечения, где это делается.
Другим нежелательным поведением является несогласованность в стиле обработки аргументы (особенно для одной программы, но также и в рамках набора программы). Любой из них требует приложенных аргументов или требует отсоединения аргументы (или разрешить либо), но не имеют некоторых параметров, требующих прилагаемый аргумент и другие, требующие отдельного аргумента. И быть что " = " можно использовать для разделения опции и аргумент.
Как и во многих, многие (связанные с программным обеспечением) вещи - последовательность важными, чем индивидуальные решения. Использование инструментов, которые автоматизируют и стандартизация обработки аргументов помогает с согласованностью.
Что бы вы ни делали, прочитайте Параметры командной строки TAOUP и рассмотрите Стандарты для интерфейсов командной строки . (Добавил (а) J F Себастьян - спасибо; Я согласен.)