С вывести параметры командной строки. Работа с файловой системой. Использование групповых символов

Зачем нужны параметры?

Большинство команд, которые дают в оболочке Linux, состоят не из одного слова (сокращения слова). Чаще команды дополняются специальными параметрами (аргументами и ключами). Таким образом происходит конкретизация и модификация команды. Если провести аналогию между поведением командной оболочки и поведением человека, то можно сказать, что для человека слово "иди" - это команда, а слова "на остановку" - это параметр. Параметры позволяют более точно сформулировать то, что мы хотим.

Например, команда cal без параметров выдает календарь на текущий месяц.

Однако может потребоваться получить календарь на весь год. Тогда следует дать команду cal 2009 . В данном случае "2009" - это аргумент (операнд). Кроме того, можно получить календарь абсолютно любого месяца; в этом случае команде передаются два аргумента: номер месяца и год.


Обратите внимание, что в ответе командной оболочки неделя начинается с воскресенья. Это как-то не по русски. Для того, чтобы неделя начиналась с понедельника необходимо использовать ключ (опцию) -m (от англ. Monday – понедельник). Ключи предназначены для изменения поведения команды.


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


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

Параметры команды ls

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

Если команду ls использовать с ключом -l , то вывод будет более информативным.


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


Команда ls часто применяется для просмотра содержимого разных каталогов файловой структуры. Для этого следует уметь адресовать команду к конкретному каталогу, т. е. передать интересующий нас каталог в качестве аргумента команде ls . Пока оставим адресацию в командной строке на потом и просто просмотрим содержимое каталога, который находится в текущем (домашнем каталоге). Например, чтобы узнать что находится в каталоге Desktop, следует написать ls Desktop и нажать Enter.

До сих пор мы рассматривали команды, которые можно использовать без параметров. Однако существует ряд команд, которые без переданных им аргументов теряют всякий смысл и поэтому требуют обязательного наличия аргумента. Одной из таких команд является sleep (сон). Эта команда заставляет оболочку bash выполнить задержку перед следующей командой. А параметр, передающийся sleep , указывает какую именно задержку (сколько секунд, минут и т. д.). При интерактивной работе с bash данная команда особого смысла не имеет; однако часто для командной оболочки пишут сценарии (файлы с командами), и вот там иногда требуется выполнить задержку.


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

Вопросы

  1. Для чего необходимы параметры к командам?
  2. Что передается в качестве аргумента команде cal ? Как можно модифицировать выполнение этой команды?
  3. Что делает команда echo ?
  4. Что следует записать в командной оболочке, чтобы получить данные о файлах (правах, размере и др.) текущего каталога?
  5. Стоит ли писать sleep 1000m в командной оболочке Linux, если вы не знаете как прервать выполнение команд?

Практическая работа

  1. В командной оболочке Linux выведите календарь на текущий месяц, затем на целый год и на любой нетекущий месяц.
  2. "Заставьте" командную оболочку Linux повторить введенную вами строку.
  3. Получите сведения о файлах вашего домашнего каталога.

Итак, консоль командной строки присутствует во всех версиях операционных систем Windows. Ранние версии ОС поддерживали режим MS-DOS напрямую, что позволяло выполнять простые команды прямо из консоли. Представители же семейства NT, такие как Windows 2000 или Windows Server 2003, работают уже совсем по другим принципам, однако MS-DOS в них тоже поддерживается, но через виртуальную машину (NT Virtual DOS Machine, NTVDM), что позволяет контролировать и администрировать системные ресурсы прямо из консоли командного режима. В качестве интерпретатора командного режима выступает программа cmd.exe, запуск которой осуществляется через меню «Start -> Run». Кроме того, для запуска консоли можно воспользоваться элементом меню «Start -> All Programs -> Accessories -> Command Prompt».

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

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

Сам администратор может выполнять как одиночные команды, так и список команд, используя специальные управляющие символы (&, |). Например:

Команда 1 & Команда 2 — сначала будет выполнена Команда 1 и только затем Команда 2;
Команда 1 && Команда 2 — только после успешного выполнения Команды 1 будет запущена Команда 2. Существует возможность перенаправить выводимый программой поток напрямую в текстовый файл для дальнейшей обработки. Для этого необходимо использовать управляющий символ «>» и имя текстового файла. Пример вывода содержания текущего каталога в текстовый файл Report.txt при помощи команды dir приведен ниже:
dir> Report.txt

Администратор может запустить несколько копий консоли, вызвав в командной строке программу cmd.exe. Использование вложенной консоли позволяет работать с переменными окружения операционной системы без каких-либо последствий для всей системы в целом, так как после закрытия вложенной консоли изменения переменных окружения не сохраняются. Для контроля над этим процессом используются команды setlocal, endlocal и set.

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

Обратите внимание, что на рисунке в левом верхнем углу следующей страницы использован сложный синтаксис. Так, сразу после команды shutdown /? после специального разделителя «|» идет команда more, что позволяет выводить информацию на экран не целиком, а определенными порциями, удобными для дальнейшего чтения.

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

Кто здесь главный?

По своим возможностям консольные программы делятся на:

  • команды управления операционной системой — это такие команды, как shutdown или taskkill;
  • сетевые команды — net и ipconfig;
  • команды для мониторинга системы — tasklist и systeminfo;
  • команды для поддержки файловой системы — dir, mkdir, copy;
  • команды для обслуживания жестких дисков — defrag и diskpart;
  • команды для поддержки службы каталогов (Active Directories) — addrep и dsadd;
  • вспомогательные команды, в этот раздел входят различные утилиты для создания сценариев, настройки принтеров, работы с переменными окружения и т. д.

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

Команды мониторинга и диагностики

Для выявления неполадок в аппаратной части и проблем с программным обеспечением предназначены команды мониторинга, такие как systeminfo и tasklist. Эти утилиты впервые появились только в операционной среде Windows Server 2003, поэтому администраторы еще не в полной мере оценили функциональные возможности этих команд. Так, например, теперь не надо залезать в закладку «Свойства» иконки «Мой компьютер» — команда systeminfo напечатает на экране консоли основную информацию обо всех компонентах системы с полной расшифровкой. Параметр /s выведет информацию о любом удаленном компьютере. Например, для выяснения конфигурации компьютера TESTSERVER необходимо выполнить следующую команду:

Systeminfo /s TESTSERVER

А утилита tasklist покажет процессы, запущенные на вашем компьютере.

Утилита tasklist позволяет опрашивать системы, соединенные в сеть. Параметр /v дает возможность получать подробные листинги с полезной информацией, в том числе и об именах пользователей, а параметр /т показывает процессы, загрузившие конкретный dll-файл. Другая полезная утилита — openfiles — позволяет получить информацию обо всех открытых файлах локальной и удаленной операционной системы. В прежних версиях операционных систем Windows приходилось использовать команду oh.exe, в современных версиях достаточно выполнить в командной строке консоли команду, которая устанавливает режим мониторинга для всех открытых файлов системы:

Openfiles /local on

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

Openfiles

Команда openfiles с параметрами /query /v показывает, какие пользователи запустили процессы, открывшие файлы. С помощью других параметров-ключей можно задать различный режим вывода информации.

Команды управления операционной системой

Windows Server 2003 предоставляет администраторам новые команды, которые помогают не только диагностировать систему, но и управлять ею. К таким командам можно отнести утилиту shutdown. В качестве параметров-ключей этой утилиты можно использовать следующие:

  • /s — полное штатное отключение системы;
  • /р — выключение питания;
  • /f — завершение работы активных приложений;
  • /д — переход в режим пониженного энергопотребления;
  • /I — завершение сеанса без отключения компьютера.

В виде средства, регистрирующего все штатные выключения компьютера, выступает обработчик событий штатных выключений (Shutdown Event Tracker), который собирает и диагностирует все отключения, выполненные администратором. Также предусмотрена возможность выключать систему с указанием причины, для этого необходимо использовать ключ /d.

Команда taskkill, аналог команды kill в операционных системах семейства *nix, позволяет «убить» зависшее приложение. Совместно с командой tasklist эти утилиты представляют собой мощное средство для оперативного вмешательства в ход выполнения приложений, представляющих потенциальную угрозу для производительности сервера. Из параметров этой команды необходимо отметить ключ/pid, который позволяет завершать процесс по его уникальному идентификатору, и ключ /im — для завершения приложения с указанным именем. Следующий пример позволяет завершить процессы с идентификаторами 1000 и 1240:

Taskkill /pid 1000 /pid 1240

Команды для обслуживания жестких дисков

Оптимизацию жесткого диска позволяет выполнить команда defrag. Утилита умеет дефрагментировать диски с файловой системой FAT, FAT32 и NTFS. Defrag одинаково хорошо работает как с динамическим типом диска, так и с базовым. Синтаксис вызова этой команды следующий:

Defrag диск [ -a j [ -f ] [ -v ] [ -? ]

Параметр -а предусматривает только анализ информации на диске, параметр -f — оптимизацию информации, в том числе и при отсутствии необходимого дискового пространства для создания временных файлов, а параметр -v — вывод отчета о ходе оптимизации. Не забудьте, что для успешной дефрагментации диск должен содержать как минимум 15% свободного места.

Команда fdisk уже не поддерживается ядром операционной системы Windows Server 2003. На смену ей пришла команда diskpart, также предназначенная для обслуживания жестких дисков. Разбить диск на разделы, создать логические диски, удалить их — вот лишь некоторые задачи, решаемые этой утилитой. В основном команда diskpart ориентирована на работу со специальными файлами-сценариями, в которых описаны процедуры обслуживания жестких дисков. Вот как выглядит вызов этой команды для файла-сценария Scriptl.txt:

Diskpart /s Scriptl.txt

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

Create partition logical size=2048

Сетевые команды

Среди сетевых команд хотелось бы выделить две утилиты. Первая — это команда ipconfig, вторая — netstat. Системные администраторы используют эти команды не только для мониторинга сети, но и для защиты от опасных программ, пытающих установить контроль над системой.

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

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

Команды для поддержки службы каталогов

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

Для мониторинга такой сложной структуры в операционной системе предусмотрена команда dsquery, которая предназначена для расширенного поиска компонентов службы каталогов. Также этой командой можно пользоваться для вывода информации о свойствах выбранных компонентов (ключ -attr). Параметры -scope, -subtree, -onelevel, -base определяют уровень вложенности поиска, а ключ -filter позволяет задействовать фильтр поиска.

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

Dsmod user
"CN=TestUser,CN=Users,DC=bigtex,DC=net " -pwd Uf@tfmgerelt -mustchpwd yes

Команда dsmove перемещает объект в пределах текущего домена. При помощи ключей -newname и -newparent можно задавать новое имя объекта и менять его местоположение.

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

Описание некоторых часто употребляющихся команд для работы с файлами и директориями представлено в таблице. Команду deltree, которая выполняла каскадное удаление папок и файлов в них, заменяет теперь rmdir с ключом /s.

Маленькие секреты большой системы

Изменение приглашения для командной строки

Найдите в реестре ключ: Создайте в этом ключе строковый параметр «PROMPT» с типом (REG_EXPAND_SZ) и присвойте одно из следующих значений:

  • $В — вертикальная черта «I»;
  • $D — текущая дата;
  • $G — знак больше «>»;
  • $1_ — знак меньше «<»;
  • $N — текущий диск;
    $Р — текущий диск и путь;
  • $Q — знак равно «=»;
  • $Т — текущее время;
  • $V — версия Windows;
  • $$ — знак доллара «$».

После перезагрузки вы увидите приглашение в определенном вами виде.

Автонабор команд

Для включения возможности автонабора команд по нажатию клавиши «Tab», найдите в реестре ключ:

Затем установите значение параметра CompletionChar равным 9, что соответствует идентификатору клавиши «Tab», закройте реестр и перезагрузите компьютер. В окне консоли, набирая часть имени команды, вы можете теперь нажать клавишу «Tab», и Windows автоматически подставит необходимую команду.

Изменение цвета консоли

Найдите в реестре ключ:

Измените параметр DefaultCoior. Значение -F0 определит вывод черного текста на белом фоне, а значение IE удивит вас желто-синей расцветкой консоли.

Быстрый запуск консоли командной строки из контекстного меню

Найдите в реестре ключ:

Добавьте в него подразделы «CommandPrompt -> Command". Параметру Default ключа Command присвойте значение «cmd.exe /k cd "%1"».

Параметру Default ключа Command Prompt присвойте значение «Open Command Prompt".

Щелкнув правой кнопкой мыши на любой папке в Проводнике, можно выбрать команду Open Command Prompt, которая запустит консоль с командной строкой в нужной директории.

Заключение

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВПО «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ»

Кафедра информационных систем, технологий и автоматизации в строительстве

«Основы командной строки Windows »

Лабораторный практикум

по курсу «Операционные системы»

М о с к в а 2 0 1 2

Составитель:

доцент кафедры ИСТАС Иванов Н.А.

Методические указания содержат основные сведения о назначении командной строки Windows и о средствах настройки и управления работой командной оболочки, о приемах эффективной работы с командной строкой. В методических указаниях изложены основы сценариев командной строки.

Методические указания предназначены для студентов факультета ИСТАС по направлению подготовки 230100 «Информатика и вычислительная техника» , изучающих дисциплину «Операционные системы».

1. Средства работы с командной строкой в Windows

Консоль командной строки присутствует во всех версиях операционных систем Windows. Ранние версии ОС поддерживали режим MS-DOS напрямую, что позволяло выполнять простые команды прямо из консоли. Представители же семейства NT, такие как Windows XP, Windows 7 или Windows Server 2008, работают уже совсем по другим принципам, однако MS-DOS в них тоже поддерживается, но через виртуальную машину (NT Virtual DOS Machine, NTVDM), что позволяет контролировать и администрировать системные ресурсы прямо из консоли командного режима.

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

При стандартной установке командный интерпретатор хранится на диске под именем cmd.exe в папке \Windows\System32 . Размер файла в Windows 7 равен 295 Кб, в Windows XP SP3 – 387 Кб.

Значимость командной строки состоит в том, что некоторые возможности ОС Windows доступны только при использовании командной строки. Кроме того, ключи командной строки перекрывают параметры Реестра Windows.

2. Запуск командной оболочки

Существует 2 способа запуска интерпретатора командной строки. Первый, самый быстрый и простой, подразумевает выполнение следующих шагов (рис. 1а и 1б):

– нажать клавишу с логотипом Windows + R; – откроется окно Выполнить (Windows 7) или Запуск программы (Windows XP); – введите cmd, нажмите OK;

Рис. 1а. Запуск командного интерпретатора в Windows 7.

Рис. 1б. Запуск командного интерпретатора в Windows XP.

При необходимости при запуске интерпретатора командной строки можно указать ключи, управляющие работой командной строки. С помощью ключей можно, например, запустить командную строку с отключением эхо-вывода («тихий» режим), определить, как будет вести себя окно командной строки после выполнения команды, указать, какая кодировка ANSI или Unicode будет использована при выводе результатов выполнения команды в файл. В таблице 2.1 перечислены основные ключи, доступные при запуске командной строки.

Таблица 2.1. Ключи управления запуском интерпретатора командной строки

Описание

Пример использования

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

cmd /c "dir c:"

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

cmd /k "dir c:"

Устанавливает для вывода в файл ANSI-кодировку

Устанавливает для вывода в файл Unicode-кодировку

Отключает эхо-вывод

Задает цвета текста и фона окна командной строки

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

Windows XP: Пуск –> Программы –> Стандартные –> Командная строка. Windows 7: Пуск –> Все программы –> Стандартные –> Командная строка. Независимо от способа запуска будет открыто окно интерпретатора командной строки, вид которого для разных версий Windows представлен на рисунках 2а и 2б.


Рис. 2а. Вид окна интерпретатора командной строки в Windows 7.


Рис. 2б. Вид окна интерпретатора командной строки в Windows XP

Для выполнения некоторых команд могут потребоваться права администратора. В Windows 7 если текущий пользователь является администратором компьютера, то при запуске командного интерпретатора через комбинацию клавиш WIN + R на экран будет выведено окно «Выполнить» , отличающееся от стандартного окна наличием фразы о запуске от имени администратора (рис. 3).


Рис. 3. Запуск командного интерпретатора пользователем-администратором в Windows 7.

Для запуска командного интерпретатора обычным пользователем с правами администратора необходимо сделать следующее:

Пуск - Все программы - Стандартные - Командная строка, нажать правую кнопку мыши и выбратьЗапуск от имени администратора (рис. 4).


Рис. 4. Запуск командного интерпретатора обычным пользователем с правами администратора в Windows 7.

В Windows XP обычный пользователь так же может запустить командный интерпретатор от имени пользователя, наделенного правами администратора. Для этого необходимо последовательно выбрать Пуск - Все программы - Стандартные - Командная строка, нажать правую кнопку мыши, выбрать « Запуск от имени…» (рис. 5) и указать пользователя, от имени которого будет выполнен запуск командной строки (рис. 6).

Рис. 5. Запуск командного интерпретатора обычным пользователем от имени другого пользователя в Windows XP.

Рис. 6. Окно выбора пользователя, от имени которого будет запускаться командный интерпретатор в Windows XP.

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

3. Настройка свойств командной оболочки

3.1. Работа с мышью в окне командной строки

Чтобы в окне командной строки можно было работать мышью в каждой из версий Windows нужно выполнить определенную последовательность действий.

В Windows 7 (рис. 7) нужно:

Командная строка» «Свойства »; – в открывшемся окне «Свойства: Командная строка » на вкладке «Общие » в разделе «Правка » установить флажок «Выделение мышью » и нажать кнопку OK .

В Windows XP (рис. 8) нужно:

– щелкнуть правой кнопкой мыши по строке заголовка окна «Командная строка» ; – из открывшегося контекстного меню выбрать «Свойства »; – в открывшемся окне «Свойства: Командная строка » на вкладке «Общие » в разделе «Редактирование » установить флажок «Выделение мышью » и нажать кнопку OK .

Рис. 7. Настройка возможности использования мыши в командной строке в Windows 7.

Рис. 8. Настройка возможности использования мыши в командной строке в Windows XP.

В появившемся окне «Изменение свойств ярлыка» (рис. 9) нужно выбрать один из предложенных вариантов. В первом случае все проделанные изменения будут сохранены только для текущего сеанса работы с командной строкой. Во втором случае все изменения сохранятся для последующих сеансов работы.

Рис. 9. Окно выбора варианта сохранения изменений свойств командной строки.

После этого можно выделять мышью текстовое содержимое окна командной строки, нажатием Enter копировать в буфер обмена, а затем вставлять, например, в файл *.txt, или *.doc. Но самое главное, после этого можно вставлять – предварительно скопированные из текстового файла в буфер обмена – длинные текстовые строки команд, щелкнув правой кнопкой мыши по строке заголовка командной строки и выбрав из контекстного меню Изменить –> Вставить.

3.2. Изменение цветов окна командной строки

По умолчанию фоновый цвет окна интерпретатора команд и в Windows XP, и в Windows 7 мрачного черного цвета (рис. 11), но у пользователя есть возможность изменить цветовую гамму окна командной строки (рис. 12).

Чтобы изменит цветовую гамму окна «Командная строка» нужно: – запустить интерпретатор команд; – щелкнуть правой кнопкой мыши по строке заголовка окна; – из открывшегося контекстного меню выберать пункт «Свойства »; – в открывшемся окне «Свойства Командная строка » на вкладке «Цвета» последовательно, устанавливая переключатели «Фон экрана» и «Текст на экране» , внизу в строке палитры выделить нужный цвет и нажать кнопку OK. – в появившемся окне Изменение свойств установите переключатель –> Сохранить свойства для других окон с тем же именем –> OK.

В Windows XP нужно выбрать вариант сохранения изменений цветовой гаммы путем установки переключателя в окне «Изменение свойств ярлыка» (рис. 9).

Рис. 10. Настройка цветовой гаммы окна командной строки.


Рис.11. Цветовая гамма окна «Командная строка» по умолчанию.


Рис.12. Цветовая гамма окна «Командная строка» после настройки цветов.

4. Перенаправление стандартных ввода, вывода и ошибок

4.1. Синтаксис перенаправления ввода, вывода и ошибок

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

Таблица 4.1. Синтаксис перенаправления ввода и/или вывода

Синтаксис перенаправления

Описание

Команда1 | Команда2

Вывод первой команды служит вводом для второй

Команда < [путь]имя_файла

Ввод команды поступает из заданного файла

Команда > [путь]имя_файла

Вывод команды направляется в заданный файл. При этом если указанный файл не существует, то он создается, в противном случае – перезаписывается

Команда >> [путь]имя_файла

Вывод команды направляется в заданный файл. При этом если указанный файл не существует, то он создается, в противном случае вывод дописывается в конец файла

Команда < [путь]имя_файла1 > [путь]имя_файла2

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

Команда < [путь]имя_файла1 >> [путь]имя_файла2

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

Команда 2> [путь]имя_файла

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

Команда 2>&1 [путь]имя_файла

Сообщения об ошибках и стандартный вывод записываются в один и тот же файл

4.2. Примеры перенаправления ввода, вывода и ошибок

4.2.1. Перенаправление стандартного вывода

Перенаправление вывода команды в качестве ввода другой команды принято называть конвейеризацией. Вывод можно последовательно перенаправлять неоднократно. Чаще всего конвейеризация используется для двух команд – FIND и MORE.

Команда FINDищет строки в файлах или в тексте ввода и выводит строки, соответствующие условию, которое задается в виде подстроки, заключенной кавычками. Например, чтобы получить список всех файлов с расширением.bmpкаталогеc:\windowsможно воспользоваться следующим вариантом перенаправления и обработки ввода:

dir c:\windows | find ".bmp"

Команда MOREпринимает вывод других команд и разбивает его на части, каждая из которых умещается в окне консоли. Например, если нужно просмотреть список всех файлов с расширением.dllкаталогаc:\windows\system32, можно воспользоваться командамиFINDиMOREследующим образом:

dir c:\windows\system32 | find ".dll" | more

Подробную справку о возможностях использования рассмотренных команд можно получить, введя в командной строке find /? илиmore /? .

4.2.2. Перенаправление ввода-вывода в файлы

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

Например, вывод списка файлов каталога c:\test\dataв файлc:\test\list.txtможно оформить следующей командой:

dir c:\test\data > c:\test\list.txt

Поиск файлов с расширением.batв списке файлов, хранящемся в файлеc:\test\list.txtможно организовать так:

find< c:\test\list.txt “.bat”

Здесь в качестве стандартного ввода для команды find определен файлc:\test\list.txt, а критерием поиска служит помещенная в кавычки строка.bat.

5. Создание цепочек и группирование команд

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

В таблице 5.1 представлены основные схемы для создания цепочек и группирования команд.

Таблица 5.1. Основные схемы для создания цепочек и группирования команд

Синтаксис

Описание

Команда1 & Команда2

Последовательно выполняются команды Команда1 и Команда2

Команда1 && Команда2

Команда2 выполняется, если Команда1 выполнена успешно

Команда1 || Команда2

Команда2 выполняется, если Команда1 не выполнена успешно

(Команда1 & Команда2)&&(Команда3)

Команды Команда1 и Команда2 объединятся в группу, а Команда3 выполняется в случае успешного завершения этих команд

(Команда1 & Команда2) || (Команда3)

Команды Команда1 и Команда2 объединятся в группу, а Команда3 выполняется в случае неудачного завершения этих команд

5.1. Примеры использования цепочек команд

Цепочки команд используются, когда для решения задачи команды нужно выполнить в определенной последовательности.

Пусть требуется перейти в определенный каталог и получить список файлов, отсортированный по дате. Использование цепочки позволяет решить эту задачу, введя всего одну строку:

cd c:\test\dir_cont & dir /o:d

Иногда требуется выполнить какую-либо операцию, если предыдущая операция потерпела неудачу.

Пусть есть группа рабочих станций, на части которых существует каталог c:\test\data, а на других – каталогc:\data. Необходимо обеспечить возможность копирования всех данных из каталогаdocsвнешнего накопителяD: в каталог data, независимо от конфигурации рабочей станции. Используя механизм цепочек команд, решить поставленную задачу можно следующим образом:

cd c:\test\data || cd c:\data & copy d:\docs\*.*

Выполняя указанную цепочку команд, система попытается сначала перейти в каталог c:\test\data. Если такого каталога нет, то система попытается перейти в каталогc:\data. Затем, независимо от того, какой каталог станет текущим, система скопирует в него все файлы из каталогаd:\docs.

Часто возникает ситуация, когда запуск последующей команды зависит от того, как завершилась предыдущая команда – успешно или неудачно.

Пусть требуется переместить файл test.batиз каталогаc:\testв каталогd:\arhiv, только если указанный файл существует. Задача может быть решена вводом следующей строки:

dirc:\test\test.bat&&movec:\test\test.batd:\arhiv

5.2. Группирование последовательностей команд

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

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

hostname&ver>info.txt

Однако, при выполнении команд в файл info.txtпопадет только информация об операционной системе, а имя компьютера будет выдано на экран. Это вполне объяснимо. Команды выполняются последовательно, для первой команды стандартный вывод не переопределен и направляется на экран. Для второй команды стандартный вывод перенаправлен в файл. Чтобы в файл попадал вывод обеих команд, их нужно сгруппировать:

(hostname&ver) >info.txt

Теперь в файл indo.txtпопала вся необходимая информация.

6. Основы сценариев командной строки

6.1. Создание сценариев командной строки

Рассмотренные выше возможности работы с командной строкой широко используются при создании сценариев командной строки.

Сценарии командной строки – текстовые файлы с командами, которые необходимо выполнять последовательно, часто в автоматическом режиме. Сценарии можно создавать и редактировать подобно любому текстовому файлу, используя текстовые редакторы, например, Блокнот. Каждая команда или группа команд, которые нужно выполняться совместно, должны размещаться в отдельной строке. Командная строка не требует специального символа завершения помимо символа конца строки. Файл, в котором сохраняется сценарий командной строки, должен иметь расширение . bat или. cmd .

При создании сценариев командной строки очень часто используются шесть простейших команд: cls ,rem ,echo ,@ ,title ,color .

Рассмотрим подробнее назначение этих команд.

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

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

«…в каждом создаваемом сценарии должны быть комментарии, поясняющие:

- когда сценарий был создан и в последний раз изменен;

- кто создал сценарий;

- для чего предназначен сценарий;

- куда направляется вывод сценария. »

Команда rem может быть использована для предотвращения выполнения команды или группы команд. В этом случае достаточно поместить командуrem в начало строки.

Команда echo служит двум целям: для записи текста в вывод и для включения/выключения эхо-отображения команд. Обычно при выполнении команд сценария сами команды и вывод этих команд отображаются в консольном окне. Это называетсяэхо-отображением команд . Чтобы отключить эхо-отображение нужно ввести командуecho off . Чтобы узнать, включено ли эхо-отображение команд или нет, достаточно просто ввести командуecho .

Для возобновления эхо-отображения используется команда echo on . Чтобы использовать командуecho для отображения текста нужно указать текст после пробела после команды.

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

При этом между командой и точкой пробела быть не должно !

Команда @ предотвращает эхо-отображение одной текущей строки. Эту возможность команды@ используют для отключения эхо-отображения командыecho off .

Команда title позволяет отобразить в заголовке окна консоли команд любого текста. Этой возможностью можно пользоваться для отображения хода выполнения сценария.

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

Таблица 6.1. Коды цветов для окна командной оболочки

Ярко-синий

Салатовый

Бирюзовый

Ярко-красный

Фиолетовый

Ярко-фиолетовый

Ярко-желтый

Ярко-белый

6.2. Использование аргументов и параметров в сценариях

При запуске сценария на выполнение можно передать сценарию необходимую информацию путем задания значения аргументов. Каждое значение, передаваемое сценарию, задает значение одного из формальных параметров. Имя самого сценария сохраняется в параметре %0. Значение первого аргумента сохраняется в параметре %1, второго аргумента – параметру %2 и так далее до %9 для девятого аргумента. Если при вызове сценария указывается более девяти аргументов, то дополнительные аргументы не теряются. Они сохраняются в специальном параметре %*. Получить доступ к дополнительным аргументам можно с помощью команды shift . Если командаshift используется без аргумента, то значения параметров сценария сдвигаются на 1, то есть значение параметра %1 заменяется значением параметра %2 и т.д.

При необходимости можно указать, с какого параметра начинается сдвиг, указав номер первого из заменяемых параметров в качестве аргумента команды shift . Например, если указатьshift /2 , то значение параметра %2 будет заменено значением параметра %3 и т.д. Значения параметров %0 и %1 при этом останутся без изменения.

6.3. Использование переменных в сценариях в сценариях

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

Встроенные системные переменные являются ресурсами операционной системы или формируются драйверами аппаратуры. Такие переменные доступны всем Windows-процессам даже если никто не вошел в систему в интерактивном режиме. Значения встроенных системных переменных выбираются из реестраWindows.

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

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

Команда имеет следующий формат:

set [переменная=[строка]] , где

переменная - имя переменной среды;

строка - строка символов, присваиваемая указанной переменной.

Имена переменных не чувствительны к регистру и могут содержать латинские буквы, цифры и практически все символы клавиатуры, кроме символов, зарезервированных в командной строке: @ < > & | ^.

На практике принято присваивать переменным информативные имена, например:

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

В отличие от многих языков программирования, командная строка игнорирует типы данных. Значения всех переменных хранятся как символьные строки .

Для доступа к значениям переменных используются два варианта метода подстановки.

Теги: Параметры командной строки

Параметры командной строки

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

Программа во время запуска может принимать параметры. Они являются аргументами функции main. Общий вид функции main следующий

Void main(int argc, char **argv) { ... }

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

Первым аргументом (argv) всегда является имя программы. При этом имя выводится в зависимости от того, откуда была запущена программа.

#include #include void main(int argc, char **argv) { printf("%s", argv); }

Теперь научимся немного работать с командной строкой. Это понадобится для того, чтобы передавать аргументы нашей программе. Сочетание клавиш Win+R вызывает окно "Выполнить". Наберите в нём cmd и вы откроете командную строку. Также можно найти cmd.exe поиском в меню Пуск. В юникс-подобных операционных системах можно вызвать программу "терминал".

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

Стандартная для всех операционных систем команда cd осуществляет переход к нужной папке. Существует два зарезервированных имени - . (точка) и.. (две точки). Точка - это имя текущей папки.

Никуда не переходит

Обращение к родительской папке

Переход в родительскую папку

Для перехода по нужному пишется cd адрес. Например, нужно перейти на windows в папку C:\Windows\System32

Cd C:\Windows\System32

В линуксе если нужно перейти в папку /var/mysql

Cd /var/mysql

Если путь содержит пробелы, то он пишется в двойных кавычках

Cd "D:\Docuents and Settings\Prolog"

Терминал имеет следующие полезные особенности: если нажать стрелку вверх, по появится предыдущая выполненная команда. Если нажать tab, то терминал попытается дополнить строку до известной ему команды, или дополнить путь, перебирая все папки и файлы в текущей папке.
Наберите cd C:\
нажимайте tab и смотрите, что происходит.

Ещё одна важная команда dir на windows и ls на linux, выводит на консоль содержимое текущей папки (той папки, в которой вы находитесь в данный момент)

Ваша программа вернула своё полное имя. Перейдите в папку, где располагается ваша программа и посмотрите её содержимое



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



Заметьте - имя изменилось. Так как программа вызывается из своей папки, то выводится относительно имя. Теперь изменим программу и сделаем так, чтобы она выводила все аргументы. которые ей переданы.

#include #include void main(int argc, char **argv) { int i; for (i = 0; i < argc; i++) { printf("%s\n", argv[i]); } }

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



Давайте теперь напишем программу, которая получает два аргумента числа и выводит их сумму

#include #include #include void main(int argc, char **argv) { int a, b; if (argc != 3) { printf("Error: found %d arguments. Needs exactly 2", argc-1); exit(1); } a = atoi(argv); b = atoi(argv); printf("%d", a + b); }

Соберём и вызовем



Таким образом работает большинство программ. Кликая на ярлык, вы вызываете программу, на которую он ссылается. Большинство программ также принимают различные аргументы. Например, можно вызвать браузер firefox из командной строки и передать аргументы
firefox.exe "www.mozilla.org" "сайт" и он сразу же откроет в двух вкладках сайты по указанным адресам.

Многие стандартные команды также имеют параметры. В windows принято, что они начинаются с прямого слеша, в юниксе с минуса или двух минусов. Например

Выводит только папки, а в терминале linux

Ls -l выводит все файлы и папки с указанием атрибутов

Для просмотра дополнительных команд windows наберите в командной строке help или смотрите руководство (его легко найти в интернете). Для линукса команд и их опций гораздо больше, а некоторые из них являются самостоятельными языками программирования, так что стоит выучить хотя бы минимальный набор и их опции.

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

Синтаксис команд командной строки.

Каждая команда имеет определенную синтаксическую структуру, согласно которой пользователь вводит команду в командной строке. Для примера, возьмем команду 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 и т.д.

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