Дневники чайника

Ликбез молодого юзера

Эта статья написана для тех, кто слишком часто слышит обидное - RTFM (Read Twice the Fine Manual), для тех, кто родился вместе с Windows 95, для тех, кто подозревает, что за иконками на рабочем столе и кнопкой "пуск" прячется другой мир, для тех, кто ищет туда дверь.



Я постараюсь популярно объяснить несколько важнейших понятий уровня пользователей дисковых операционных систем, совместимых с PC-DOS.

Вы спросите: а причём здесь PC-DOS?

Дело в том, что сегодняшняя архитектура PC происходит от знаменитого IBM-PC, выпущенного в 1981 году. А первая операционная система для этой машины называлась "IBM PC-DOS".

Строго говоря, это была "86-DOS", разработанная "Seattle Computer Company". Но вот здесь появился Билл Гейтс - молодой предприимчивый специалист из "Microsoft". Он, за скромную плату, получил права на перепродажу и переделку этой ОС и практически сразу же предложил её фирме IBM в качестве базовой системы для их будущего шедевра - IBM PC 5150 (первая модель архитектуры PC).

Спустя несколько лет появилась версия этой операционной системы под названием MS-DOS.

Дальше MS-DOS обзавелась графической оболочкой Windows 1 и 2 (тем же путём выгодных сделок), а затем и Windows 3.

Первая операционная система семейства Windows - "Windows 95". Она тоже всё ещё базировалась на MS-DOS.

Параллельно разрабатывалось новое ядро - "Windows NT". В нём осталась лишь совместимость с MS-DOS и, как любая совместимость, - с ограничениями.

Однако до сегодняшнего дня сохранились основные понятия, применяемые ещё в PC-DOS v1.0.

Примечание

1. Далее в статье аббревиатура DOS будет означать семейство операционных систем от первой PC-DOS до последней WinXP.

2. Слово команда в этой статье не имеет отношения к командам процессора или Ассемблера. Здесь речь пойдёт о командах DOS.

Основные понятия

Файл (file) - целая единица для хранения любых доступных компьютеру видов информации.

Самые важные свойства файлов - имя, расширение и атрибуты.

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

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

Значит, к любому файлу можно обратиться и по короткому имени (только его нужно знать).

Расширение файла - необязательная часть имени, она сообщает OS о том, какие действия производить с файлом. То есть расширение создано, чтобы определять тип файла (exe, doc, htm...). У коротких имён расширение не может быть больше 3 символов.

Сегодня расширением считается всё, что идёт после последней точки в названии файла.

Атрибуты файлов - они сообщают основные характеристики.

Некоторые атрибуты:

Read Only - файл только для чтения

Hidden - скрытый от пользователя

System - системный файл

...

Директория, она же каталог, она же подкаталог, она же папка (directory, (sub)folder, catalog) - это следующая за файлом целая единица.

Призвана объединять группы файлов.

Фактически, на уровне системы, директория - это тот же файл.

Соответственно, она имеет аналогичные свойства - имя, расширение, атрибуты...

Система файлов и папок в DOS имеет иерархическую структуру, называемую...

Дерево папок и файлов (File Tree), о дереве самое главное знать два простых правила.

  1. Каждый файл обязательно имеет свою директорию.
  2. Каждая директория обязательно имеет свою наддиректорию.

Второе правило не включает только...

Корневой каталог (корень, рут, root (directory). Не путать с system root!) - начальный каталог в структуре каталогов, только в нём могут храниться файлы и другие подкаталоги. Корень не является файлом ни на каком уровне, соответственно он не имеет имени, расширения, атрибутов и других свойств файлов.

Корень не может быть помещён в другую папку.

Теперь осталось рассказать о самой общей категории пользователя DOS.

Здесь в терминологии не всё так просто, как хотелось бы (программисты и сисадмины долго трудились).

Обычно в быту мы называем эту категорию просто диском (disk).

Некоторые обязательно подчёркивают, что диск логический (logical disk).

Другие называют томом (volume).

Есть также любители слова раздел (partition), или логический раздел.

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

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

Диск

Все остальные объекты (корень, а в нём файлы, папки...) могут существовать только внутри логического диска.

Каждый диск (будем считать отформатированный диск DOS) обязательно содержит свою корневую папку.

И, вопреки представлениям некоторых пользователей, недавно освоивших мышку под WinXP, диски нельзя "перетаскивать" в папки. Это вам не UNIX.

Буква диска (drive later, volume later)

За каждым диском закрепляется определённая буква. Одна латинская буква от A до Z (A и В зарезервированы под дисководы).

С буквой диска тоже возникла путаница.

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

метка диска ((volume) label), она может быть до 11 или до 32 символов (на FAT-дисках или NTFS соответственно).

Я бы не стал называть метку именем диска. Хотя бы потому, что используя средства ОСи, через метку к диску обратиться нельзя, и если диску не присвоена буква, то метка вам ничем не поможет.

Давайте подытожим сказку "о смерти кощеевой".

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

Сейчас рассмотрим всё это на практике, но сначала хорошо бы узнать, что такое...

Интерфейс командной строки

Существует такое важное понятие, как программный интерфейс.

Говоря простым языком, это способ, которым программа общается с пользователем. То есть принимает и выдаёт информацию (ввод-вывод для пользователя).

В стародавние времена, когда ещё не было не то что мышек, но даже персональных компьютеров, придумали интерфейс командной строки (ИКС).

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

В чём заключается идеология ИКС?

  1. Пользователь набирает управляющие команды с клавиатуры (ввод пользователя).
  2. Операционная система сразу же отображает всё, что пользователь набирает в одну строку (вывод пользователю).
  3. Командная строка начинает выполняться только после нажатия Enter.
  4. Выполнив задуманное действие, программа выводит пользователю информацию о том, что она сделала.

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

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

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

Теперь ближе к практике.

Откройте cmd.exe (Пуск > Все программы > Стандартные > Командная строка).

Перед нами открылось консольное приложение. Это полноценная программа, которая пришла на смену command.com.

Когда-то command.com являлась единственным интерфейсом для пользователя. Все приложения запускались именно отсюда. Всё управление памятью, дисками, файлами и папками выполнялось с помощью команд DOS и других расширяющих команд. Позже появилось множество альтернативных способов управления системой и загрузки программы, но все они были лишь надстройкой над command.com.

До сих пор командное управление лежит в основе ОСей. Любое действие DOS можно выполнить по старинке - из командной строки, и это довольно полезно.

Именно поэтому менеджеры файлов (FAR, Total Commander и т.п) имеют приглашение командной строки. Даже в стандартном проводнике есть строка, только она ограничена, так как это не строка операционной системы, а строка IE, в ней нельзя выполнять внутренние команды cmd.exe.

Синтаксис путей DOS

Итак, мы открыли консоль командной строки cmd.exe.

После представления операционной системы видно саму строку ввода, она называется строка приглашения и выглядеть может по-разному (смотри команду PROMPT). Но допустим, что вид такой:

С:\Documents and Settings\User\_

Здесь есть путь к текущей папке - "С:\Documents and Settings\User\"

и курсор ввода - "_" (обычно он мигает).

Путь всегда начинается с диска.

С: - имя диска (то есть буква диска и двоеточие составляют имя диска в DOS).

Дальше идёт символ обратной дроби (reverse solidus) - "\".

Его также называют обратная косая черта (backslash). Этот символ в путях разделяет каталоги.

Дальше у нас идёт название папки - "Documents and Settings".

Затем опять косая черта - разделитель папок. И ещё один каталог "User".

Такая строка сообщает нам, что мы находимся на диске "C" в папке "User", которая вложена в "Documents and Settings", а та находится в корне, и теперь от нас ждут ввода.

Сейчас можно просто набрать на клавиатуре имя файла, точку и расширение, затем нажать Enter. Система выполнит то, что предусмотрено для расширения этого файла.

Если вы набираете имя файла без расширения, то ОСь будет искать файлы зарегистрированных выполняемых типов (такие, как: exe, com, bat и т.п.) с введённым именем.

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

Кроме файлов, в командной строке можно выполнять внутренние команды DOS.

Ключи командной строки (command line options)

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

Большинство команд DOS принимают универсальный ключ справки - /?.

К примеру, выполните в командной строке:

fc /?

И вы увидите самые важные сведения о команде FC.

Первое, что стоит в этой справке, - это описание команды (для чего она).

Потом идёт вид команды (синтаксис выполнения):

FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W]
[/nnnn][диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2

FC /B [диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2

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

<обязательно с предыдущем элементом>
[не обязательно]
Обязательно {либо это | либо это}

Для того чтобы команда выполнила своё предназначение, всё, что вне скобок, нужно вводить обязательно.

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

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

Кроме того, многие оконные приложения тоже обладают ключами. Даже explorer.exe (проводник Windows) имеет кучу полезных ключей (здесь описана лишь небольшая часть).

Ещё раз главное.

  1. Ключи обычно идут через пробел.
  2. Справку о большинстве команд можно получить с ключом /?.
  3. Бывают команды и программы с обязательными ключами.

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

Внутренние команды устроены прямо в командном файле (в нашем случае в cmd.exe, а если бы запустили command.com, то команды брались бы оттуда). Имена таких команд воспринимаются до файлов, но только с правильными ключами.

По-научному это звучит так: приоритет ключей внутренних команд выше файлов. Объясню на конкретном примере.

Команда CD. Cправку о ней можно получить, набрав её с ключом вопроса без пробела:

cd/?

Это внутренняя команда, и если в текущем каталоге есть файл с именем cd.exe, или cd.com, или cd.bat, или какой-нибудь ещё выполняемый файл, то система будет вести себя так:

на запрос "cd" - выполнится файл.

на запрос "cd верный параметр" - выполнится команда CD.

на запрос "cd абракадабра" - выполнится файл с ключом абракадабра.

Чтобы это переварить, можно провести эксперимент.

Поместите в текущую папку наш пример prax07.exe и переименуйте его в cd.exe. Выполняя CD с разными параметрами, вы получите то запуск примера cd.exe, то команды CD.

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

Внешние команды - это просто самостоятельные программы, каждая из которых находится в своём собственном exe- или com-файле.

Выше мы запускали FC, она как раз одна из внешних команд DOS.

Вот ещё один пример.

Внешняя команда TREE

Команда даёт "графическое" представление структуры папок и сведения о томах.

Её файл можно найти тут - "C:\WINDOWS\SYSTEM32\tree.com"

На самом деле это PE-файл, так что формально у него должно быть расширение exe. Но поскольку раньше многие команды были в формате com, для совместимости им оставили расширение com.

Попробуйте выполнить эту команду (обязательных ключей у неё нет).

Бывает такое, что весь текст, который выводит команда или программа, не умещается в окне консоли. Текст быстро "пролетает", и нам остаётся только последняя страница.

Эту проблему легко решить. Я расскажу о двух способах.

  1. Использовать оператор "|more".

  2. Использовать дополнительный оператор переназначения вывода ">".

Попробуйте ввести команду TREE вот так:

tree C:\

Сделали? =)

Кстати говоря, прервать выполнение любой команды ДОС можно комбинацией клавиш Ctrl+Pause (Ctrl+Break).

Теперь попробуем ввести с ключом "|more":

tree C:\ |more

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

tree C:\ >имя_файла.расширение

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

Довольно полезный пример переназначения вывода команды FC.

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

FC /b имя1.exe имя2.exe >имя3.txt

Для самообразования рекомендую освоить ещё несколько полезных команд: DIR, COPY, CLS, REM и, разумеется, самую важную команду HELP. =)

Кроме того, загляните в "Центр справки и поддержки" Windows. Прочитайте там хотя бы главу "Использование операторов перенаправления команд".

Переменные окружения (environment variables) - команда SET

В MS-DOS не было реестра, некоторые его функции выполняли переменные окружения (переменные средЫ). Что это такое?

Наборы переменных с именами и значениями, которые используют ОС и другие программы.

Настроить список переменных двух наборов (пользователя и системных) в WinXP можно так:
правый клик на "Мой компьютер" > Свойства > закладка "Дополнительно" > Переменные среды.

Для установки переменной в одном сеансе запуска консоли можно воспользоваться командой SET из командной строки.

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

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

Есть и такие переменные, которые определяются для одной программы. Например, переменную ML будет использовать компилятор MASM для настроек компиляции.

Однако для нас с вами самая важная системная переменная - PATH, переменная прописных путей.

Прописные пути (common path)

ОС, получив запрос выполнить тот или иной файл, сначала ищет его в текущем каталоге, а затем в путях, которые прописаны в переменной PATH.

Если вы желаете вызывать какой-либо файл из любой папки (как команду), то следует добавить путь к нему в переменную PATH (и расширение в переменную PATHEXT, если его там нет). Формат переменной выглядит просто:

PATH=значение1; значение2; значениеN

(можно с пробелами, можно без, главное через точку с запятой)

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

Операторы DOS

Они позволяют дополнить поведение команды.

Выше я уже использовал оператор переназначения вывода ">".

Сейчас покажу ещё пару полезных операторов:

nul - ничего

* - всё что угодно

Допустим, нам нужно скопировать все файлы из папки Windows\system32, которые начинаются на ms (а дальше может быть любое сочетание символов в именах и любое расширение) на диск D в папку MS. Вот как это делается с помощью команды COPY:

copy C:\Windows\system32\ms*.* D:\MS

Очень удобно с оператором * обрабатывать все файлы с одним расширением (например *.txt) или искать сочетание букв (например *ms.*).

Кстати, в FAR'e удобно выделять желаемое, используя клавишу "+" на нампаде.

Оператор nul действительно означает "ничего", допустим, строка:

tree >nul

приведёт к тому, что вывод команды tree уйдёт в никуда.

Так можно указывать ещё и nul-файлы (мнимые) в командной строке.

Для чего вам нужно "ничего" - соображайте сами =).

Пакетные файлы DOS (командные бат-файлы)

Главный недостаток ИКС заключается в том, что нам нужно каждый раз много набирать на клавиатуре, чтобы выполнить одно действие с программой. Не очень удобно. Хотя бы потому, что нужно всё время помнить ключи, операторы и команды.

Этот недостаток исправляет возможность записи повторяющейся последовательности команд в отдельный файл.

При запуске файлов с расширением bat система воспринимает их как набор команд и операторов DOS.

В текстовом виде в DOS-кодировке мы можем напечатать команды и операторы (каждая новая строка - ввод на выполнение) и сохранить как "имя.bat".

Так можно автоматизировать ввод часто повторяемых команд.

Язык команд и операторов DOS довольно развит. Мы можем создавать целые сценарии в bat-файлах, используя различные меню, циклы и многое другое. По сути, это макроязык DOS.

Рассмотрим пару простых bat-примеров.

@echo off
echo Список действующих прописных путей:
echo %PATH%

Оператор "@" - подавляет вывод команды (в окне консоли не будет видно echo off).

"echo off" - отключает вывод дальнейших команд (в окне консоли не будет видно следующих команд).

"echo текст" - выводит текст (однако раз выше было echo off, слово echo выводиться не будет).

%PATH% - заменяется содержимым переменной окружения с именем PATH.

А вот такой батник покажет 3 ключа, которые переданы ему из командной строки:

cls
@echo off
echo Опции которые вы ввели:
echo - %1
echo - %2
echo - %3


Описывать язык DOS дальше в рамках данной статьи - уже явный перебор.

Всё, что нужно, чтобы освоить команды и операторы, вы можете получить, воспользовавшись командой HELP.

Ещё есть "центр справки и поддержки Windows".

Книги никто не отменял.

Кроме того, недавно придумали Интернет... Хотя, конечно, вы-то про него знаете, раз уж дочитали этот бред.

Bitfry

<<Вернуться на главную

Hosted by uCoz