ЛАБОРАТОРНЫЙ ПРАКТИКУМ: "РАБОТА С КОМАНДНОЙ СТРОКОЙ WINDOWS"
СТРУКТУРА ПРАКТИКУМА
ЗАДАНИЯ ПРАКТИКУМА
ЗАДАНИЕ №1
ЗАДАНИЕ №2
ЗАДАНИЕ №3
ЗАДАНИЕ №4
ЗАДАНИЕ №5
ВВЕДЕНИЕ
1. ОСНОВЫ КОМАНДНОЙ СТРОКИ MS WINDOWS
1. Начало работы с командной строкой
2. Структура файловой системы Windows
3. Работа с текстовыми файлами в Cmd.exe
4. Копирование и перемещение файлов и директорий
2. ЭФФЕКТИВНАЯ РАБОТА С КОМАНДНОЙ СТРОКОЙ
1. Полезные инструменты командной строки
2. Настройка параметров командной оболочки
3. Перенаправление ввода/вывода и конвейеры
3.ЧТО ДОЛЖЕН ЗНАТЬ НЕ ТОЛЬКО СИСАДМИН
1. Начало работы и внешний вид FAR
2. Основные операции FAR Manager
3. Дополнительные возможности FAR
2.3. Перенаправление ввода/вывода и конвейеры
Командная оболочка позволяет запускать команды разных типов: встроенные команды, утилиты и приложения, рассчитанные на командную строку. По умолчанию, все они получают ввод из параметров, указываемых при вызове команды, и выводят результат в стандартное окно консоли. Но иногда нужно получить ввод из другого источника либо направить вывод в файл или на другое устройство вывода, например, на принтер или в файл. Более того, в командном интерпретаторе Cmd.exe существуют возможность перенаправить вывод отработавшей команды другим командам, в качестве ввода – это так называемая конвейеризация (piping). Формы перенаправления ввода/вывода проиллюстрированы в Таблице 2.2.
Таблица 2.2. Варианты перенаправления ввода/вывода и конвейеров
№ | Вариант перенаправления | Комментарий |
---|---|---|
1. | команда > [путь]файл | Вывод команды перенаправляется в файл – если такого файла нет, то он создается, а если файл существует, то он перезаписывается. |
2. | команда >> [путь]файл | Вывод команды перенаправляется в файл – если такого файла нет, то он создается, а если файл существует, то данные добавляются в него. |
3. | команда < [путь]файл | Команда получает ввод из файла. |
4. | команда1 | команда2 | команда3 … | Конвейер: вывод первой команды является вводом для второй, вывод второй - вводом для третьей и т.д. |
Любой из рассмотренных четырех вариантов может рассматриваться как отдельная команда и быть составной частью любого из тех же четырех вариантов.
При построении дерева B (Рис. 5.1) для создания текстовых файлов без помощи Notepad, можно использовать перенаправление стандартного вывода команды ECHO (Пример 2.5), предназначенной для вывода текстовых сообщений в формате:
ECHO [сообщение]
Пример 2.5. Создание файла перенаправлением стандартного вывода в файл
d:\WINLAB>md vasya\every\answer, vasya\mod\yeah, vasya\mod\moscow d:\WINLAB>tree vasya D:\WINLAB\VASYA ├───every │ └───answer └───mod ├───moscow └───yeah d:\WINLAB>chcp 1251 Текущая кодовая страница: 1251 d:\WINLAB>echo На это каждый ответит, каждый ответит: > vasya1.txt d:\WINLAB>dir /b backup papa vasya vasya1.txt d:\WINLAB>move vasya1.txt vasya\every\answer\ Перемещено файлов: 1. d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every │ └───answer │ vasya1.txt └───mod ├───moscow └───yeah d:\WINLAB> d:\WINLAB>more < vasya\every\answer\vasya1.txt На это каждый ответит, каждый ответит: d:\WINLAB>
Аналогичным образом предлагается создать файл VASYA2.TXT (Таблица 1.2, Рис. 1.5).
Следует отметить, что команда ECHO используется также для переключения режима отображения команд на экране (ввод ECHO без параметра служит для определения текущего состояния):
ECHO [ON | OFF]
К перенаправлению ввода/вывода можно отнести копирование данных командой COPY с консоли в файл, и из файла на консоль. По умолчанию, устройством ввода консоли является клавиатура, а устройством вывода – экран монитора, в общем случае входные и выходные устройства консоли могут быть переопределены. Системное имя консоли в Windows: CON.
Пример 2.6. Перенаправление ввода/вывода с консоли и на консоль
d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every │ └───answer │ vasya1.txt │ vasya2.txt └───mod ├───moscow └───yeah d:\WINLAB>copy con vasya\mod\yeah\vasya3.txt Ну кто его не знает? Yeah, yeah! ^Z – Символ «конец файла», инициируемый нажатием «Ctrl+Z» Скопировано файлов: 1. d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every │ └───answer │ vasya1.txt │ vasya2.txt └───mod ├───moscow └───yeah vasya3.txt d:\WINLAB>more < vasya\mod\yeah\vasya3.txt Ну кто его не знает? Yeah, yeah! d:\WINLAB>copy vasya\mod\yeah\vasya3.txt con Ну кто его не знает? Yeah, yeah! Скопировано файлов: 1. d:\WINLAB>
Когда речь идет о вводе данных, то CON –это клавиатура, а когда о выводе данных, то именем CON обозначается экран монитора. Используя копирование с консоли CON, (Пример 2.6) создадим файлы VASYA3.TXT и VASYA3.TXT как на ветке B (Рис. 1.5, Таблица 1.2).
Перенаправление вывода в файл с добавлением строк: «>>« будет рассмотрено немного позже, теперь же необходимо разобраться с конвейерами команд. Наиболее часто конвейеры используются в задачах поиска и сортировки данных – для этого в основном используются команды: FIND и MORE.
Пример 2.7. Применение конвейера для получения списка текстовых файлов
d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every │ └───answer │ vasya1.txt │ vasya2.txt └───mod ├───moscow │ vasya4.txt └───yeah vasya3.txt d:\WINLAB>dir vasya /b /s d:\WINLAB\vasya\every d:\WINLAB\vasya\mod d:\WINLAB\vasya\every\answer d:\WINLAB\vasya\every\answer\vasya1.txt d:\WINLAB\vasya\every\answer\vasya2.txt d:\WINLAB\vasya\mod\moscow d:\WINLAB\vasya\mod\yeah d:\WINLAB\vasya\mod\moscow\vasya4.txt d:\WINLAB\vasya\mod\yeah\vasya3.txt d:\WINLAB>dir vasya /b /s | find ".txt" d:\WINLAB\vasya\every\answer\vasya1.txt d:\WINLAB\vasya\every\answer\vasya2.txt d:\WINLAB\vasya\mod\moscow\vasya4.txt d:\WINLAB\vasya\mod\yeah\vasya3.txt d:\WINLAB>
Команда FIND ищет строки в файлах или в тексте ввода и выводит строки, соответствующие условию. Например, можно получить список всех файлов с расширением «.TXT» в текущем каталоге и его подкаталогах, перенаправив вывод команды DIR на ввод FIND через конвейер (Пример 2.7).
Пример 2.8. Применение конвейера и цикла для копирования файлов
d:\WINLAB>cd vasya d:\WINLAB\vasya>dir /b every mod vasya.list d:\WINLAB\vasya>dir /b /s | find ".txt" > vasya.list d:\WINLAB\vasya>dir /b every mod vasya.list d:\WINLAB\vasya>more vasya.list d:\WINLAB\vasya\every\answer\vasya1.txt d:\WINLAB\vasya\every\answer\vasya2.txt d:\WINLAB\vasya\mod\moscow\vasya4.txt d:\WINLAB\vasya\mod\yeah\vasya3.txt d:\WINLAB\vasya>for /f %x in (vasya.list) do copy /y %x every\answer\ d:\WINLAB\vasya\every\answer\vasya1.txt Невозможно скопировать файл поверх самого себя. d:\WINLAB\vasya\every\answer\vasya2.txt Невозможно скопировать файл поверх самого себя. d:\WINLAB\vasya\mod\moscow\vasya4.txt Скопировано файлов: 1. d:\WINLAB\vasya\mod\yeah\vasya3.txt Скопировано файлов: 1. d:\WINLAB\vasya>dir /b every\answer vasya1.txt vasya2.txt vasya3.txt vasya4.txt d:\WINLAB\vasya>
Команда FIND как фильтр текстовых строк в одном или нескольких файлах может применяться в формате:
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «строка» [путь]имя_файла
/V – Вывод всех строк, НЕ содержащих заданную строку.
/C – Вывод общего числа строк, содержащих заданную строку.
/N – Вывод номеров отображаемых строк.
/OFF[LINE] – Не пропускать атрибут «Автономный».
/I – Поиск без учета регистра символов.
Если путь не задан, то команда FIND выполняет поиск в тексте консоли либо в тексте, переданном по конвейеру другой командой.
В предыдущем примере результаты фильтрации данных (список всех текстовых файлов директории VASYA) направлены в стандартный поток вывода – на экран, поэтому они носят чисто информативный характер. Для того чтобы использовать этот список в практических целях, например для копирования всех файлов директории в один каталог, список должен находиться в файле. Имя такого файла произвольно – для определенности можно дать имя файлу VASYA.LIST (Пример 2.8). Для анализа списка и выполнения операций с его элементами целесообразно использовать простые варианты специализированного цикла FOR в формате (где «переменная», обозначающая строку анализируемого одноэлементного списка может иметь любое имя – например «X»):
FOR /F %переменная IN (файл) DO команда [параметры]
FOR /F %переменная IN (‘команда’) DO команда [параметры]
Используя цикл FOR в формате обработки строк файлов, можно скопировать все текстовые файлы всех подкаталогов директории VASYA в один каталог (Пример 2.8), а затем объединить текстовые файлы (Пример 2.9), применяя перенаправление вывода в файл с добавлением данных: «>>«.
Команда MORE активно используется для перенаправления стандартного ввода и построения конвейеров команд в нижеследующих форматах (список ключей см. § 1.3):
MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [диск:][путь]имя_файла
имя_команды | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
Пример 2.9. Применение цикла и перенаправления для создания файлов
d:\WINLAB\vasya\every\answer> for /f %x in ('dir /b') do more %x >> vasya.txt ВЫДАЧА d:\WINLAB\vasya\every\answer>more vasya1.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya2.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya3.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya4.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more < vasya.txt На это каждый ответит, каждый ответит: -Конечно, Вася, Вася, Вася, Ну кто его не знает? Yeah, yeah! Вася, Вася, Вася - стиляга из Москвы. d:\WINLAB\vasya\every\answer>