Основные команды интерпретатора командных строк Windows. Какой командой завершается работа с командным интерпретатором windows


Завершение работы интерпретатора команд

EXIT

      1. Сравнение двух файлов или двух наборов файлов и вывод различий между ними

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

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

Ключ /Bзадает сравнение двоичных файлов (побайтное) с выводом всех несовпадающих пар байтов.

      1. Поиск заданного текста в файлах

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:файл] [/C:текст] [/G:файл] [модель] [[диск:][путь]файл[ ...]]

/B

Поиск строк, начинающихся с искомого текста-модели

/E

Поиск строк, оканчивающихся искомой моделью

/L

Модель поиска следует воспринимать буквально

/R

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

/S

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

/I

Выполнение поиска без учета регистра букв

/X

Вывод строк, полностью совпадающих с моделью

/V

Вывод только строк, не содержащих модели

/N

Вывод номеров строк, содержащих модель поиска

/M

Вывод только имен файлов, содержащих модель поиска

/O

Вывод числа символов в файле перед моделью поиска

/P

Пропуск файлов, содержащих непечатаемые символы

/F:файл

Ввод списка файлов из указанного файла (“/” означает ввод с клавиатуры)

/C:строка

Модель поиска может состоять из нескольких слов

/G:файл

Ввод моделей поиска из указанного файла (“/” означает ввод с клавиатуры)

модель

Одна или несколько моделей поиска

[диск:] [путь]файл

Один или несколько файлов, в которых выполняется поиск

Если ключ /Cне задан, то пробелы используются для разделения нескольких моделей поиска.

Например, команда “FINDSTR "добрый день" File1.txt” выполнит поиск двух строк – «добрый» и «день» - в файлеFile1.txt, а “FINDSTR /C:"добрый день" File1.txt” выполнит поиск одной строки «добрый день».

Выражения, которые можно использовать с командой FINDSTR, описаны в справочной системе.

      1. Просмотр и изменение командных строк, сопоставленных с типом файлов

FTYPE [тип_файлов[=[команда_открытия]]]

тип_файлов

Тип файлов

команда_открытия

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

Команда FTYPEбез параметров выводит список типов файлов, для которых определена командная строка открытия (т.е. командная строка, которая должна выполняться при двойном щелчке на имени файла в «Проводнике» или по команде «Открыть» из контекстного меню). Если указан только тип файла,FTYPEвыводит командную строку открытия для этого типа файлов. Если после знака равенства не указана строка открытия,FTYPEудалит текущее сопоставление для указанного типа файлов.

studfiles.net

1 Командный интерпретатор Windows. 2

42

Операционные системы. Лаб.работа №1 (ОСWindows. Интерфейс командной строки. Команды и командные файлы)

Оглавление

6

1.1 Запуск оболочки cmd.exe 2

1.2 Внутренние и внешние команды. Структура команд 2

1.3 Перенаправление ввода/вывода и конвейеризация (композиция) команд 4

1.4 Команды MORE и SORT 6

1.5 Условное выполнение и группировка команд 7

1.6 Примеры команд для работы с файловой системой 8

1.6.1 Пути к объектам файловой системы 8

1.6.2 Команда CD 9

1.6.3 Команда COPY 9

1.6.4 Команда XCOPY 11

1.6.5 Команда DIR 13

1.6.6 Команды MKDIR и RMDIR 15

1.6.7 Команда DEL 16

1.6.8 Команда REN 16

1.6.9 Команда MOVE 16

2 Командные файлы 17

2.1 Назначение 17

2.2 Вывод сообщений и дублирование команд 18

2.3 Использование параметров командной строки 19

2.4 Работа с переменными среды 21

2.4.1 Получение значения переменной 21

2.4.2 Преобразования переменных как строк 22

2.4.3 Операции с переменными как с числами 23

2.4.4 Локальные изменения переменных 24

2.4.5 Связывание времени выполнения для переменных 24

2.5 Приостановка выполнения командных файлов 25

2.6 Вызов внешних командных файлов 26

2.7 Операторы перехода 26

2.8 Операторы условия 28

2.8.1 Проверка значения переменной 28

2.8.2 Проверка существования заданного файла 30

2.8.3 Проверка наличия переменной среды 31

2.8.4 Проверка кода завершения предыдущей команды 31

2.8.5 Проверка версии реализации расширенной обработки команд 32

2.9 Организация циклов 33

2.9.1 Цикл FOR … IN … DO … 33

2.9.2 Цикл FOR /D … IN … DO … 34

2.9.3 Цикл FOR /R … IN … DO … 35

2.9.4 Цикл FOR /L … IN … DO … 35

2.9.5 Цикл FOR /F … IN … DO … 37

2.9.6 Циклы и связывание времени выполнения для переменных 40

3 Задание на лабораторную работу 41

  1. Командный интерпретатор Windows.

    1. Запуск оболочкиcmd.Exe

Интерфейс командной строки в операционных системах Windowsреализован с помощью командного интерпретатораcmd.exe. Интерпретатор позволяет последовательно вводить команды в интерактивном режиме и отображать результаты их выполнения.

Командный интерпретатор Cmd.exe, как и другие исполняемые файлы, находится в каталоге %SystemRoot%\SYSTEM32(значением переменной среды%SystemRoot%является системный каталог Windows, обычно C:\Windows).

Для запуска командного интерпретатора (открытия нового сеанса командной строки) можно выбрать пункт Выполнить(Run) в меню Пуск (Start), ввести имя файла Cmd.exe и нажать кнопку OK. В результате откроется новое окно (см. рис. 1), в котором можно запускать команды и видеть результат их выполнения.

Рис. 1.Командное окно интерпретатора Cmd.exe Windows XP

При запуске интерпретатора отображается текущий каталог(им назначается каталог профиля пользователя ) и выдаётся приглашение для ввода команд >

    1. Внутренние и внешние команды. Структура команд

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором - такие команды называются внутренними (например, COPY или DIR) Другие команды операционной системы представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и cmd.exe, такие команды называются внешними (например, MORE или XCOPY).

Для выполнения команды после приглашения командной строки надо ввести имя этой команды (регистр не важен), ее параметры и ключи (если они необходимы) и нажать клавишу <Enter>.

Например:

C:\>COPY C:\myfile.txt D:\ /V

здесь COPY- имя команды -,C:\myfile.txt и D– параметры,/Vключ. В некоторых командах ключи могут начинаться не с символа /, а с символа – (минус), например,-V.

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

Например, если выполнить команду ATTRIB /?, то в окне интерпретатора появится следующий текст:

Отображение и изменение атрибутов файлов.

ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[диск:][путь]имя_файла] [/S]

+ Установка атрибута.

- Снятие атрибута.

R Атрибут "Только чтение".

A Атрибут "Архивный".

S Атрибут "Системный".

H Атрибут "Скрытый".

/S Обработка файлов во всех вложенных папках указанного пути.

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

XCOPY /? | MORE

В этом случае после заполнения очередного экрана вывод помощи будет прерываться до нажатия любой клавиши. Кроме того, используя символы перенаправления вывода > и >>, можно текст, выводимый на экран, направить в текстовый файл для дальнейшего просмотра. Например, для вывода текста справки к команде XCOPY в текстовый файл xcopy.txt, используется следующая команда:

XCOPY /? > XCOPY.TXT

Замечание

Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств: PRN (принтер), LPT1–LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал: при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).

studfiles.net

Интерпретатор командной строки ос ms Windows xp

Лабораторная работа 2 - 2011

Часть 2. Язык интерпретатораикомандные файлы

Цель работы – знакомство с языком интерпретатора командной строки ОС MS Windows XP и командными файлами

1. Краткие теоретические сведения

1.1 Язык интерпретатора Cmd.Exe. Командные файлы

Язык оболочки командной строки (shell language) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды ОС (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с программами, написанными на языке программирования. Например, если записать в файл deltmp.bat следующие команды:

C:\

CD %TEMP%

DEL /F *.tmp

и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.

1.1.1. Вывод сообщений и дублирование команд

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

REM Следующие две команды будут дублироваться на экране …

:: эта строка – такой же комментарий, как и предыдущая

DIR C:\

ECHO OFF

:: А остальные уже не будут

DIR D:\

Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:

ECHO ON

:: Команда DIR C:\ дублируется на экране

DIR C:\

:: А команда DIR D:\ — нет

@DIR D:\

Таким образом, если поставить в самое начало файла команду

@ECHO OFF

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

ECHO сообщение

Например,

@ECHO OFF

ECHO Привет!

Команда ECHO. (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку. Например,

@ECHO OFF

ECHO Привет!

ECHO.

ECHO Пока!

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

Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:

@ECHO OFF

ECHO Привет! > hi.txt

ECHO Пока! >> hi.txt

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

@ECHO OFF

REM Попытка копирования

XCOPY C:\PROGRAMS D:\PROGRAMS /s

:: Добавление сообщения в файл report.txt в случае удачного завершения копирования

IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt

1.1.2 Использование параметров командной строки

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

Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:

@ECHO OFF

CLS

ECHO Файл %0 копирует каталог %1 в %2

XCOPY %1 %2 /S

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

copier.bat C:\Programs D:\Backup

то на экран выведется сообщение

Файл copier.bat копирует каталог C:\Programs в D:\Backup

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.

Пример 1. Пусть командный файл my.bat вызван из командной строки следующим образом:

my.bat p1 p2 p3

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.

При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.

Например, в следующей командеSHIFT /2

параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.

В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 1.

Таблица 1. Операторы для заменяемых параметров

Операторы

Описание

%~Fn

Переменная %n расширяется до полного имени файла

%~Dn

Из переменной %n выделяется только имя диска

%~Pn

Из переменной %n выделяется только путь к файлу

%~Nn

Из переменной %n выделяется только имя файла

%~Xn

Из переменной %n выделяется расширение имени файла

%~Tn

Возвращается дата и время создания (модификации) файла

%~Zn

Возвращается размер файла в байтах

%~$PATH:n

Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

Данные синтаксические конструкции можно объединять друг с другом, например:

%~DPn — из переменной %n выделяется имя диска и путь,

%~NXn —из переменной%nвыделяется имя файла и расширение.

Пример 2.Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметромРассказ.doc (%1=Рассказ.doc). Размер файла 2150 байт, дата создания 12.12.2009, время -12:55. Тогда применение операторов, описанных в табл. 1,к параметру%1даст следующие результаты:

%~F1=C:\TEXT\Рассказ.doc

%~D1=C:

%~P1=\TEXT\

%~N1=Рассказ

%~X1=.doc

%~DP1=C:\TEXT\

%~NX1=Рассказ.doc

%~T1=12.12.2009 12:55

%~Z1=2150

studfiles.net

Интерпретатор командной строки — Википедия

Материал из Википедии — свободной энциклопедии

Интерпретатор командой строки в ОС UNIX bash cmd.exe Windows после запуска Сессия в Windows PowerShell

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

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

В операционные системы MS-DOS и Windows 95 включён командный интерпретатор COMMAND.COM, в Windows NT — cmd.exe, в OS/2 командный интерпретатор тоже называется cmd.exe, самый распространённый командный интерпретатор в Linux и FreeBSD — bash, помимо которого есть большое семейство других.

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

К функциям интерпретатора командной строки относятся:

  • Взаимодействие с пользователем (редактирование командной строки, история команд и т. д.).
  • Обработка (расширение) шаблонов имен («*», «?» и т. д.).
  • Перенаправление ввода-вывода команд.
  • Управление заданиями.

Программирование в интерпретаторе[

ru.wikipedia.org

Основные команды интерпретатора командных строк Windows

Основные команды интерпретатора командных строк Windows

yuertyweruiytuieryuitwe

Название командыОписаниеВозможные атрибутыattribВывод файлов с их атрибутами. Присваивание и снятие атрибутов. Возможные значения атридутов: R-Только чтение; A-Архивный;S-Системный; H-Скрытый.1attrib/sОбработка файлов с указанными именами в текущей папке и во всех её подпапкахсd_\Переход в корневой каталог cd_имя папкиВойти в папку. commandЗапуск ещё одного интерпретатора команд MS-DOS(внутри одного сеанса MS-DOS) copyКопирование одного или нескольких файлов в другое место. Чтобы объединить файлы, укажите один конечный и несколько исходных файлов, используя подстановочные знаки или формат "файл1+файл2+файл3+...".Синтаксис команды выглядит так:сору источник результат. Если надо скопировать несколько файлов, то команда будет выглядеть так: сору источник+источник+.... результат(где источник-это путь копируемого файла, а результат-это путь уже скопированного файла. dateПоказать и(или) изменить дату. del  dir/aПоказывает файлы с указанными атрибутами dir/bВыводятся только имена файлов dir/cПрименение разделителя групп разрядов для вывода размера файлов(по умолчанию)  dir/dВывод списка в несколько столбцов с сортировкой по столбцам dir/lИспользование нижнего регистра для имён файлов dir/nОтображение имён файлов в крайнем правом столбце dir/oСортировка списка отображаемых файлов dir/pПауза после заполнения каждого экрана dir/qВывод сведений о владельце файла dir/sВывод списка файлов из указанного каталога и его подкаталогов dir/tВыбор поля времени для отображения и сортировки dir/wВывод списка в несколько столбцов dir/xОтображение коротких имён для файлов, чьи имена не соответствуют стандарту 8.3. Формат аналогичен выводу с ключом /n, но короткие имена файлов выводятся слева от длинных. Если короткого имени у файла нет, вместо него выводятся пробелы dir/4Вывод номера года в четырёхзначном формате doskey  edit  erase  exitВыйти из DOS. Если вы в Windows, то сеанс MS-DOS (интерпретатор команд command.com) будет закончен. find  for  goto  graphics  if  md_имя папкиСоздать папку(директорию). mkdirСоздать папку(директорию) mkdir \a\b\cСоздаёт папку с именем "А", в которой находится папка с именем "В", в которой находится папка с именем "С" more  ping  rd_ имя файла или папкиУдаляет файл или папку(если папка пуста) rd/sУдаляет папку с её подкаталогами(если папка не пуста, то нужно применять эту команду) rd/qУдаление папки с её подкаталогами без запроса подтверждения на удаление(не будет надписи d:\> Продолжить [Y(Да)/N(Нет)]? ) rem  rename  ren  setup  sys a: c:       shift  start  timeПоказать и (или) изменить системное время winpopup  assocВывод либо изменение сопоставлений по расширениям имен файлов.atВыполнение команд и запуск программ по расписанию.breakВключение/Выключение режима обработки комбинации Ctrl-C.caclsОтображение/Редактирование списков управления доступом (ACL) к файлам.callВызов одного пакетного файла из другого.chcpВывод либо установка активной кодовой страницы.chdirВывод имени или смена текущей папки.chkdskПроверка диска и вывод статистики.chkntfsОтображение или изменение выполнения проверки диска во время загрузки.clsОчистка экрана.cmdЗапуск ещё одного интерпретатора командных строк Windows.colorУстановка цвета текста и фона, используемых по умолчанию.compСравнение содержимого двух файлов или двух наборов файлов.compactОтображение или изменение сжатия файлов в разделах NTFS.convertПреобразование дисковых томов FAT в NTFS. Нельзя выполнить преобразование текущего активного диска.copyКопирование одного или нескольких файлов в другое место.dateВывод либо установка текущей даты.delУдаление одного или нескольких файлов.diskcompСравнение содержимого двух жестких дисков.diskcopyКопирование содержимого одного гибкого диска на другой.doskeyРедактирование и повторный вызов командных строк, создание макросов.echoВывод сообщений и переключение режима отображения команд на экране.endlocalКонец локальных изменений среды для пакетного файла.eraseудаление одного или нескольких командных файлов.exitЗавершение работы интерпретатора командных строк.fcСравнение двух файлов или двух наборов файлов и вывод различий между ними.findПоиск текстовой строки в одном или нескольких файлах.findstrПоиск строк в файлах.forЗапуск указанной команды для каждого из файлов в наборе.formatФорматирование диска для работы с Windows.ftypeВывод либо изменение типов файлов, используемых при сопоставлении по расширениям имён файлов.gotoПередача управления в отмеченную строку пакетного файла.graftablПозволяет Windows отображать расширенный набор символов в графическом режиме.helpifОператор условного выполнения команд в пакетном файле.labelСоздание, изменение и удаление меток тома для дисков.mdСоздание папки.mkdirСоздание папки.modeКонфигурирование системных устройств.moreПоследовательный вывод данных по частям размером в один экран.moveПеремещение одного или нескольких файлов из одной папки в другую.pathВывод либо установка пути поиска исполняемых файлов.pauseПриостановка выполнения пакетного файла и вывод сообщения.popdВосстановление предыдущего значения текущей активной папки, сохранённого с помощью команды PUSHD.printВывод на печать содержимого текстовых файлов.promptИзменение приглашения в командной строке Windows.pushdСохранение значения текущей активной папки и переход к другой папке.rdУдаление папки.recoverВосстановление читаемой информации с плохого или повреждённого диска.remПомещение комментариев в пакетные файлы и файл config.sys.renПереименование файлов и папок.renameПереименование файлов и папок.replaceЗамещение файлов.rmdirУдаление папки.setВывод, установка и удаление переменных среды Windows.setlocalНачало локальных изменений среды для пакетного файла.shiftИзменение содержимого (сдвиг) подставляемых параметров для пакетного файла.sortСортировка ввода.startЗапуск команды или программы в отдельном окне.substСопоставляет заданному пути имя диска.timeВывод и установка системного времени.titleНазначение заголовка окна для текущего сеанса интерпретатора командных строк CMD.EXE.treeГрафическое отображение структуры папок заданного диска или заданной папки.typeВывод на экран содержимого текстовых файлов.verВывод сведений о версии Windows.verifyУстановка режима проверки правильности записи файлов на диск.volВывод метки и серийного номера тома для диска.xcopyКопирование файлов и дерева папок.

okompah.narod.ru

Список команд командной строки в Windows 10. Параметры команд и команда help в Windows

C:\Users\Dell>help

Для получения сведений об определенной команде наберите HELP <имя команды>

ASSOC Вывод либо изменение сопоставлений по расширениям имен файлов.

ATTRIB Отображение и изменение атрибутов файлов.

BREAK Включение и выключение режима обработки комбинации клавиш CTRL+C.

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

CACLS Отображение и редактирование списков управления доступом (ACL) к файлам.

CALL Вызов одного пакетного файла из другого.

CD Вывод имени либо смена текущей папки.

CHCP Вывод либо установка активной кодовой страницы.

CHDIR Вывод имени либо смена текущей папки.

CHKDSK Проверка диска и вывод статистики.

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

CLS Очистка экрана.

CMD Запуск еще одного интерпретатора командных строк Windows.

COLOR Установка цветов переднего плана и фона, используемых по умолчанию.

COMP Сравнение содержимого двух файлов или двух наборов файлов.

COMPACT Отображение и изменение сжатия файлов в разделах NTFS.

CONVERT Преобразует тома FAT в NTFS. Вы не можете преобразовать текущий диск.

COPY Копирование одного или нескольких файлов в другое место.

DATE Вывод либо установка текущей даты.

DEL Удаление одного или нескольких файлов.

DIR Вывод списка файлов и подпапок из указанной папки.

DISKPART Отображает или настраивает свойства раздела диска.

DOSKEY Редактирует командные строки, повторно вызывает команды Windows и создает макросы.

DRIVERQUERY Отображает текущее состояние и свойства драйвера устройства.

ECHO Отображает сообщения и переключает режим отображения команд на экране.

ENDLOCAL Завершает локализацию изменений среды для пакетного файла.

ERASE Удаляет один или несколько файлов.

EXIT Завершает работу программы CMD.EXE (интерпретатора командных строк).

FC Сравнивает два файла или два набора файлов и отображает различия между ними.

FIND Ищет текстовую строку в одном или нескольких файлах.

FINDSTR Ищет строки в файлах.

FOR Запускает указанную команду для каждого из файлов в наборе.

FORMAT Форматирует диск для работы с Windows.

FSUTIL Отображает или настраивает свойства файловой системы.

FTYPE Отображает либо изменяет типы файлов, используемые при сопоставлении по расширениям имен файлов.

GOTO Направляет интерпретатор команд Windows в отмеченную строку пакетной программы.

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

GRAFTABL Позволяет Windows отображать расширенный набор символов в графическом режиме.

HELP Выводит справочную информацию о командах Windows.

ICACLS Отображает, изменяет, архивирует или восстанавливает списки ACL для файлов и каталогов.

IF Выполняет условную обработку в пакетных программах.

LABEL Создает, изменяет или удаляет метки тома для дисков.

MD Создает каталог.

MKDIR Создает каталог.

MKLINK Создает символьные ссылки и жесткие связи

MODE Настраивает системные устройства.

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

MOVE Перемещает один или несколько файлов из одного каталога в другой.

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

PATH Отображает или устанавливает путь поиска исполняемых файлов.

PAUSE Приостанавливает выполнение пакетного файла и выводит сообщение.

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

PRINT Выводит на печать содержимое текстового файла.

PROMPT Изменяет командную строку Windows.

PUSHD Сохраняет текущий каталог, затем изменяет его.

RD Удаляет каталог.

RECOVER Восстанавливает данные, которые можно прочитать, с плохого или поврежденного диска.

REM Записывает комментарии в пакетные файлы или файл CONFIG.SYS.

REN Переименовывает файлы.

RENAME Переименовывает файлы.

REPLACE Заменяет файлы.

RMDIR Удаляет каталог.

ROBOCOPY Улучшенная служебная программа копирования файлов и деревьев папок

SET Показывает, устанавливает или удаляет переменные среды Windows.

SETLOCAL Начинает локализацию изменений среды в пакетном файле.

SC Отображает или настраивает службы (фоновые процессы).

SCHTASKS Выполняет команды и запускает программы на компьютере по расписанию.

SHIFT Изменяет положение заменяемых параметров в пакетных файлах.

SHUTDOWN Позволяет локально или удаленно завершить работу компьютера.

SORT Сортирует ввод.

START Выполняет указанную программу или команду в отдельном окне.

SUBST Связывает путь с именем диска.

SYSTEMINFO Отображает сведения о свойствах и конфигурации определенного компьютера.

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

TASKKILL Прекращение или остановка процесса либо приложения.

TIME Отображает или устанавливает системное время.

TITLE Назначает заголовок окна для сеанса CMD.EXE.

TREE Графически отображает структуру каталогов диска или пути.

TYPE Отображает содержимое текстовых файлов.

VER Отображает сведения о версии Windows.

VERIFY Устанавливает режим проверки в Windows правильности записи файлов на диск.

VOL Отображает метку и серийный номер тома для диска.

XCOPY Копирует файлы и деревья папок.

WMIC Отображает сведения об инструментарии WMI в интерактивной командной оболочке.

zametkinapolyah.ru

Командный интерпретатор — Xgu.ru

Материал из Xgu.ru

Короткий URL: shell

[править] Что такое командный интерпретатор?

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

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

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

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

  • sh. Bourne Shell. Прообраз командных интерпретаторов сегодняшнего дня. В современных Linux-системах sh представляет собой символическую ссылку на файл bash;
  • bash. Bourne-Again SHell. Основной командный интерпретатор ОС Linux. Представляет собой развитие ash и sh. Поддерживает богатый язык написания скриптов, удобный интерфейс для редактирования командной строки, автопродолжение команд и множество других полезных возможностей;
  • tcsh. C Shell. Расширенная версия интерпретатора C Shell, использующегося в BSD-системах. Поддерживает функцию автозавершения текста и расширенные возможности редактирования;
  • zsh. Очень развитый командный интерпретатор, объединяющий в себе возможности csh, bash с дополнительными, такими как: улучшенная поддержка автопродолжения, более развитые возможности редактирования, расширенные файловые шаблоны и ряд других;
  • nash. Not A SHell. Предельно облегченная оболочка, предназначенная для интерпретации сценариев в linuxrc файлах, при загрузке с виртуального диска initrd. Не позволяет работать пользователю в интерактивном режиме.

Отличительной особенностью программ интерпретаторов, являются две буквы sh, в конце их имени (от англ. shell — оболочка, командный интерпретатор). Как работает командный интерпретатор?

[править] Запуск интерпретатора

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

$ bash

После запуска интерпретатор выполняет инициализационные скрипты. Порядок выполнения соответствует указанному ниже.

Инициализационные скрипты.

/etc/profile Общесистемный скрипт настройки среды. Выполняется один раз при входе в систему (login shell) ~/.bash_profile Пользовательский скрипт настройки среды. Выполняется один раз при входе в систему (login shell) ~/.bashrc Пользовательский инициализационный скрипт командного интерпретатора. Выполняется каждый раз при запуске интерпретатора в интерактивном режиме, т.е. если он не используется для выполнения скриптов /etc/bashrc Общесистемный инициализационный скрипт командного интерпретатора. Вызывается файлом ~/.bashrc

[править] Работа интерпретатора

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

[user@host dir]$

По умолчанию приглашение содержит информацию об имени пользователя, имени компьютера и текущем каталоге. Завершающим символом является $ или # в зависимости от того, обладает ли пользователь, от имени которого запущен интерпретатор, привилегиями суперпользователя (#) или нет ($).

Формат приглашения можно настроить при помощи переменной командного интерпретатора PS1

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

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

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

  • Файловые шаблоны. Специальные метасимволы, необходимые для описания групп файлов;
  • Перенаправление. Механизм, обеспечивающий взаимодействие несвязанных между собой программ: данные, поступающие с выхода одной программы попадают на вход другой.
  • Переменные интерпретатора. Командный интерпретатор использует переменные как временное хранилище данных, необходимое ему для нормальной работы: например, переменные могут использоваться в скриптах интерпретатора или для передачи настроек. Переменные также обеспечивают удобный доступ к среде окружения программ.
  • Скриптинг. Команды могут не вводится пользователем в интерактивном режиме, а считываться из заранее подготовленного файла. Это облегчает многократное исполнение одинаковых или схожих между собой действий. Интерпретаторы развивают эту идею, позволяя обрабатывать не просто последовательность подряд идущих команд, а целые сценарии, содержащие конструкции алгоритмических языков программирования: циклы, ветвления, функции.

[править] Ввод командной строки

Командный интерпретатор bash делает редактирование командной строки предельно эффективным. Ввод строки осуществляется быстро и точно. Для выполнения этих требований bash обладает несколькими особенностями:

  • Мощный и гибко настраиваемый интерфейс редактирования командной строки;
  • История команд;
  • Автопродолжение.

[править] Редактирование

Командный интерпретатор bash предоставляет очень богатый интерфейс для ввода и редактирования командной строки. Интерфейс в значительной мере повторяет интерфейсы таких текстовых редакторов как vi (set -o vi) и emacs (set -o emacs; используется по умолчанию). Поддерживаются команды быстрого перемещения, удаления, вставки, управления историей, автозавершения, макрокоманды и многие другие.

Перечисленные привязки к клавишам не являются жесткими. Интерфейс может быть гибко настроен путём настройки библиотеки GNU readline. Интерпретатор bash поддерживает более сотни встроенных команд, облегчающих редактирование.

Комбинации клавиш, используемые при редактировании командной строки.

Ctrl-a (Home) | Ctrl-e (End) Переход к началу | концу строки Ctrl-b (влево) | Ctrl-f (вправо) Переход на один символ влево | вправо Meta-b |Meta-f Переход на одно слово влево | вправо Ctrl-l Очистка экрана Ctrl-d (Delete) | BackSpace Удаление символа на месте курсора | перед курсором Ctrl-k | Ctrl-x BackSpace Удаление до конца | начала линии Ctrl-y Вставка последнего удаленного фрагмента

[править] История команд

Все команды, введенные пользователем в интерпретаторе bash, сохраняются. Перечень ранее введенных команд называется историей. После того как нажимается клавиша Enter, команда записывается в историю. Если при этом размер списка истории слишком велик (максимальный размер определяется переменной HISTSIZE), первая команда из него удаляется. При завершении работы bash история сохраняется в файле, а в начале его работы — восстанавливается.

Если команда раньше была введена, ее можно не вводить полностью, а просто выбрать из списка истории. Наиболее простые команды для передвижения по списку истории: клавиши вверх и вниз для перехода соответственно к предыдущему и следующему элементу истории. [Предостережение] Предостережение

Первая команда это первая команда в списке истории, т.е. первая введенная команда. Последняя — последняя команда в списке, последняя введенная команда.

Комбинации клавиш для управления историей.

вверх Извлечь предыдущую команду из списка истории и передвинуться на одну команду назад вниз Извлечь следующую команду из списка истории и передвинуться на одну команду вперед Page Up Перейти к началу списка истории и извлечь первую введенную команду Page Down Перейти к концу списка истории, т.е. к строке, которая сейчас редактируется Ctrl-r Обратный поиск в истории. Просматриваются все строки, начиная с последней, и сравниваются с искомым текстом. Если вам нужно повторить поиск (перейти к следующему вхождению), надо нажать ctrl-r ещё раз. Ctrl-s Прямой поиск в истории. Просматриваются все строки, начиная с первой, и сравниваются с искомым текстом (по умолчанию ctrl-s это клавиша flow-control, которая просто замораживает консоль; отключить можно, так: stty stop '') Meta-Ctrl-y Вставить первый аргумент последней введенной команды (второе слово в строке) Meta-. Вставить последний аргумент последней введенной команды (последней слово в строке) Ctrl-o Принять на выполнение введенную строку и перейти к следующей команде в списке истории (при нажатии Enter осуществляется переход в конец списка)

[править] Автопродолжение

Автопродолжение (автодополнение, автозавершение — англ. autocompletion) является чрезвычайно удобной способностью bash. После того как набраны первые символы имени, нажатие клавиши Tab заставляет bash показать возможные варианты окончания набранного слова. Если вариант только один, bash использует его и автоматически завершает слово. Если вариантов несколько, bash выводит их все на экран. Если вариантов слишком много, bash предварительно спросит, стоит ли выводить их все? Наконец, если варианты завершения слова отсутствуют, bash издаст звуковой сигнал. Это хороший повод подумать о том, что при наборе слова, вероятно, уже допущена ошибка.

По умолчанию bash автопродолжает названия команд, имена файлов, а при использовании в начале имени специальных символов еще и имена пользователей (~), название хостов (@) и имена переменных ($).

Для автопродолжения имени команды bash просматривает названия встроенных команд и предопределенных алиасов, если совпадений не найдено — имена всех файлов в каталогах с исполняемыми файлами. Кандидатами на завершение считаются имена всех исполняемых файлов, которые начинаются также как и вводимое имя.

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

Существует дополнительная надстройка над bash: bash_completion, которая позволяет выполнять автопродолжение не только имен файлов и команд, но и всевозможных аргументов команды, основываясь на контексте автопродолжения.

[править] Пример. Автопродолжение в bash

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

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

[i@core i]$ fi1 fi find finger 2 fifteen_applet find2perl fitstopnm file findrpm fix_bs_and_del file_by_inode findsmb file-types-capplet findtr [i@core i]$ fin3 find find2perl findrpm findsmb findtr finger4 [i@core i]$ find5 /u6sr/7s8 sbin share src [i@core i]$ find /usr/sh9are/10d dia dict doc [i@core i]$ find /usr/share/doc/ -name '*bash*' /usr/share/doc/lynx-2.8.4/lynx_help/keystrokes/bashlike_edit_help.html /usr/share/doc/bash-2.05 [i@core i]$

Набрав fi, пользователь нажимает Tab 1. Есть несколько вариантов автопродолжения 2. Он набирает еще одну букву и нажимает Tab 3 еще раз. Вариантов все еще много 4. Он набирает последнюю букву 5. Теперь он может быть уверен, что команда набрана правильно (если это вообще та команда, которая ему нужна). После этого он начинает набирать имя каталога: /u и нажимает Tab 6; имя автоматически продолжается до /usr/ — других вариантов нет 7. Пользователь нажимает s и Tab 8 — вариантов несколько; он выбирает то, что кажется ему наилучшим и нажимает h и Tab 9. Имя продолжается до /usr/share/ 10. Продолжая действовать в том же духе, он набирает имя каталога документации /usr/share/doc. Далее он вручную набирает остаток команды и передает ей выполнение.

[править] Обработка командной строки

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

Обработка команды производится в несколько этапов:

  1. Раскрытие скобок;
  2. Замена тильды;
  3. Подстановка переменных и параметров;
  4. Командная подстановка;
  5. Разбиение;
  6. Замена шаблонов.

Порядок проведения этапов обработки командной строки важен.

[править] Файловые шаблоны

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

Это достигается с использованием, так называемых, шаблонных символов, которые означают не наличие самих себя в имени файла, а имеют другой — специальный смысл.

Шаблонные символы.

* Любая последовательность символов или пустая последовательность. ? Один любой символ. [] Символьный класс. Один из тех символов, которые перечислены в квадратных скобках. Если первым символом является циркумфлекс ^, наоборот — любой из символов, не перечисленных в скобках. Может быть указан диапазон символов, например a-e означает abcde.

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

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

Замена происходит так: bash последовательно просматривает список всех файлов находящихся в каталоге. Если имя файла удовлетворяет требованиям шаблона, он запоминается, в противном случае отбрасывается. Затем рассматривается имя следующего файла. Каталог, файлы которого проверяются на соответствие шаблону, определяется путевым именем предшествующим непосредственно шаблону. Если имени нет — рассматривается текущий каталог. Раскрытие шаблона происходит рекурсивно, т.е. если несколько частей путевого имени содержат шаблонные символы, тогда сначала раскрывается первое из них, потом для каждого полученного имени раскрывается второй шаблон и т.д.

[править] Пример. Файловые шаблоны

Вот несколько простых примеров: все файлы в текущем каталоге 1, все файлы, завершающиеся на .xml — файлы с суффиксом .xml 2, все файлы, начинающиеся на точку — скрытые файлы 3.

* 1 *.xml 2 .* 3

А вот несколько примеров посложнее. Все файлы с суффиксом .xml во всех подкаталогах первого уровня каталога /home/i/xml 1. Все файлы и подкаталоги второго уровня, содержащие слово linux 2. Все файлы в текущем каталоге, которые содержат в своем имени символ '-', '+', '*' (!) или '=' 3.

/home/i/xml/*/*.xml 1 /*/*linux* 2 /*[-+*=]* 3

[править] Фигурные скобки

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

Скобочный шаблон имеет следующий вид:

Префикс{Строка1,Строка2,...}Суффикс

После раскрытия скобок генерируется последовательность строк:

ПрефиксСтрока1Суффикс ПрефиксСтрока2Суффикс ...

Скобки могут быть вложенными. В этом случае они раскрываются рекурсивно.

[править] Пример. Скобочная подстановка

Создать каталоги 1999, 2000, 2001 и 2002, каждый из которых содержит 12 подкаталогов соответствующих месяцам (01, 02,..).

$ mkdir -p {1999,200{0,1,2}}/{0{1,2,3,4,5,6,7,8,9},1{0,1,2}}

Создать развернутое дерево каталогов при использовании скобочной подстановки можно одной командой:

$ mkdir -p a/{b/{c,d},e/{f,g,h/i/j/k}} $ tree . `-- a |-- b | |-- c | `-- d `-- e |-- f |-- g `-- h `-- i `-- j `-- k 11 directories, 0 files

Команда создает дерево в текущем каталоге:

[править] Командная подстановка

Бывает, что в качестве аргумента одной команды необходимо использовать информацию, полученную в результате выполнения другой команды. Можно выполнить первую команду, запомнить или записать результаты ее работы, а затем вызвать вторую команду, вручную указав полученные параметры. Этот способ является, как минимум, неудобным. Иногда он может быть вообще неприменим — например, если количество параметров велико или программа вызывается неоднократно. Для решения этой проблемы, командный интерпретатор bash предоставляет особый механизм, называемый командной подстановкой.

$(команда)

или

`команда`

При подстановке команда выполняется, а выданные результаты автоматически подставляются на ее место. Командная подстановка может быть вложенной. Для этого нужно использовать форму $() или экранировать внутренние кавычки `` при помощи символов \[1].

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

[править] Пример. Командная подстановка

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

$ touch `cat files`

Командный интерпретатор предоставляет другой — более быстрый — способ записи конструкции `cat файл`: она имеет вид `<файл`. Вышеприведенный пример выглядит так:

$ touch `<users`

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

$ du `find ~ -atime 5`

Рассмотрим этот пример более подробно. Команда du сообщает размер всех файлов, перечисленных в качестве ее параметров. Команда find выводит список всех файлов, находящихся в каталоге ~ (домашнем каталоге), к которым не было доступа последние 24*5=120 часов. После командной подстановки получается, что параметрами команда du являются имена всех файлов, к которым не было доступа последние 5 суток.

Еще один пример с командой find. Удаление из домашнего каталога всех файлов core, создаваемых при крахе программ:

$ rm -f `find ~ -name core`

[править] Подстановка переменных и параметров

Интерпретатор заменяет все названия переменных их содержимым. Конструкция вида $имя рассматривается интерпретатором как переменная окружения. Интерпретатор заменяет каждую переменную окружения ее значением. Если переменная не определена, при интерпретации она заменяется пустым значением или, другими словами, попросту удаляется из текста.

В тех случаях, когда интерпретатору сложно самостоятельно определить границы имени переменной, используется специальная форма записи ${имя}.

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

Если отсутствует двоеточие <:>, выполняется проверка только на то, существует ли переменная. Является ли переменная пустой или нет не имеет значения.

${имя:-значение} Использовать значение по умолчанию. Если переменная имя неизвестна или пуста, подставляется значение, иначе значение переменной имя; ${имя:=значение} Присвоить значение по умолчанию. Аналогична предыдущему, но только в том случае, если имя не определено, переменной имя присваивается значение. ${имя:?значение} Выдать ошибку, если переменная не определена. Если имя не определено, сообщить об ошибке на стандартный поток ошибок. В качестве текста сообщения использовать значение. ${имя:+значение} Использовать альтернативное значение. Если имя определено, ничего не подставляется (конструкция удаляется). Иначе, подставляется значение. ${имя:смещение} ${имя:смещение:длина} Подстановка подстроки. Подставляется подстрока переменной имя, начиная с позиции смещение. Если задана длина, то подставляется соответствующее количество символов, иначе строка до конца. ${!префикс*} Подставляются имена всех переменных, которые начинаются на заданную последовательность префикс. ${#имя} Количество символов в значении переменной имя. Если имя — массив, то подставляется количество элементов массива.

[править] Замена тильды

В Linux символ ~ означает домашний каталог пользователя. Интерпретатор bash идет дальше и развивает эту идею. Слово вместе с предшествующей ему тильдой ~имя, заменяется на имя домашнего каталога пользователя под названием имя (~i становится /home/i, где /home/i — домашний каталог пользователя i).

Символы ~+ означают содержимое переменной окружения PWD (текущий каталог), а ~- — содержимое переменной окружения OLDPWD, т.е. каталога, в котором пользователь находился до того, как перешел в текущий каталог. Символы ~+ и ~- можно указывать с дополнительными численными параметрами, которые означают глубину перехода по стеку каталогов (см. bash(1)/pushd).

[править] Арифметическая подстановка

Арифметическая подстановка позволяет вычислить арифметическое выражение и подставить на его место результат.

$((Арифметическое выражение))

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

[править] Пример. Арифметическая подстановка

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

$ echo $((`cat /etc/passwd |wc -l` - `ls /home |wc -w` ))

Количество строк в файле /etc/passwd, равное количеству пользователей системы, минус количество слов в листинге каталога /home, которое должно быть равно количеству домашних каталогов пользователей.

Для арифметической подстановки есть ещё конструкция $[ ... ], но она считается нестандартной, поддерживается не всеми интерпретаторами, и её лучше не использовать[2].

[править] Экранирование и кавычки

Эти темы не раскрыты: Написать про то, какие кавычки бывают, чем они отличаются, как и где их использовать, как можно экранировать сами кавычки[3].

[править] Перенаправление и каналы

Основная страница: Стандартные потоки ввода/вывода

[править] Перенаправление

Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. То есть вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода. [Замечание] Замечание

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

Кроме потоков ввода и вывода, существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода.

Вывод данных на экран и чтение их с клавиатуры происходит потому, что по умолчанию стандартные потоки ассоциированы с терминалом пользователя. Это не является обязательным — потоки можно подключать к чему угодно — к файлам, программам и даже устройствам. В командном интерпретаторе bash такая операция называется перенаправлением.

Операторы перенаправления в bash.

<файл Использовать файл как источник данных для стандартного потока ввода. >файл Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. 2>файл Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. >>файл Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. 2>>файл Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. &>файл или >&файл Направить стандартный поток вывода и стандартный поток ошибок в файл. Другая форма записи: >файл 2>&1.
[править] Пример. Перенаправление

Эта команда объединяет три файла: header, body и footer в один файл letter:

$ cat header body footer > letter

Команда cat по очереди выводит содержимое файлов, перечисленных в качестве параметров на стандартный поток вывода. Стандартный поток вывода перенаправлен в файл letter.

Здесь используется сразу перенаправление стандартного потока ввода и стандартного потока вывода:

$ sort < unsortedlines > sortedlines

Программа sort сортирует данные, поступившие в стандартный поток ввода, и выводит их на стандартный поток вывода. Стандартный поток ввода подключен к файлу unsortedlines, а выход записывается в sortedlines.

Здесь перенаправлены потоки вывода и ошибок:

$ find /home -name '*.rpm' >rpmlist 2> /dev/null

Программа find ищет в каталоге /home файлы с суффиксом .rpm. Список найденных файлов записывается в файл rpmlist. Все сообщения об ошибках удаляются. Удаление достигается при помощи перенаправления потока ошибок на устройство /dev/null — специальный фиктивный файл, означающий ничто. Данные, отправленные туда, безвозвратно исчезают.

[править] Каналы

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

В bash канал выглядит как последовательность команд, отделенных друг от друга символом |:

команда1 | команда2 | команда3 ...

Стандартный поток вывода команды1 подключается к стандартному потоку ввода команды2, стандартный поток вывода команды2 в свою очередь подключается к потоку ввода команды3 и т.д.

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

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

Программы, входящие в канал, выполняются параллельно как независимые процессы.

Можно создавать ответвление в каналах. Команда tee позволяет сохранять данные, передающиеся в канале:

tee [опции] файл...

Программа tee копирует данные, поступающие на стандартный поток ввода, в указанные в качестве аргументов команды файлы, и передает данные на стандартный поток вывода.

[править] Каналы

Пример: сортируется файл unsortedlines и результат записывается в sortedlines.

$ cat unsortedlines | sort > sortedlines

Команда выполняет те же действия, но запись является более наглядной.

Вот пример посложнее. Вывести название и объем пользовательского каталога, занимающее наибольшее место на диске.

$ du -s /home/*1 | sort -nr2 | head -13

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

Ключ -n команды sort означает, что сортировка должна быть арифметической, т.е. строки должны рассматриваться как числа, а не как последовательности символов (Например, 12>5 в то время как строка '12'<'5' т.к. сравнение строк производится посимвольно и '1'<'5'). Ключ -r означает изменения порядка сортировки — с возрастающего на убывающий.

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

Таким образом, список пользовательских каталогов с их суммарным объемом 1 арифметически сортируется по убыванию 2 и из полученного списка берется первая строка 3, т.е. строка с наибольшим числом, соответствующая самому объемному каталогу.

Использование команды tee:

$ sort text | tee sorted_text | head -n 1

Содержимое файла text сортируется, и результат сортировки записывается в файл sorted_text. Первая строка отсортированного текста выдается на экран.

[править] Программы-фильтры

Эти темы не раскрыты: Написать про то, что такое программа фильтр и какие основные программы-фильтры используются в UNIX

Эти темы не раскрыты: Написать про test и про командные скобки, а также про код завершения

[править] Последовательности команд и командные конструкции

Эти темы не раскрыты: Написать про &&,

[править] Вопросы и ответы

[править] Как посмотреть текущую привязку комбинаций клавиш к действиям?

bind -p

[править] Дополнительная информация

Работа с аргументами командной строки:

  1. ↑ Тонкости использования командной подстановки: http://wiki.bash-hackers.org/syntax/expansion/cmdsubst
  2. ↑ https://groups.google.com/forum/?fromgroups#!topic/gnu.bash.bug/HoPd5I2Zqzk%5B1-25%5D о том почему $(()) лучше чем $[ ]
  3. ↑ http://wiki.bash-hackers.org/syntax/quoting (англ.) — подробно о кавычках

xgu.ru