(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Некоторые символы, используемые в командной строке имеют в зависимости от контекста несколько различных значений — такие символы называются метасимволами. Простейшим примером метасимвола является пробел — обнаруживая пробел, интерпретатор считает текущее слово законченным. Различные варианты толкования метасимволов могут приводить к ошибкам, когда пользователь подразумевает одно значение, а shell назначает другое. Например, создав файл с именем my file (именно так, с пробелом) с помощью команды touch my file, мы обнаружим файл my и файл file. Но команда touch 'my file' сработала бы так, как и ожидалось. Использованные здесь одинарные кавычки (символы апострофа) относятся к средствам экранирования (quoting) и позволяют отменить специальное значение метасимвола.

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

Обратная косая черта позволяет отменить специальное значение любого следующего за ней метасимвола. Например, вывод символа & (амперсанд) с помощью команды echo & не даст желаемого результата (& — метасимвол), однако echo \& сработает. Сам символ обратной косой черты часто называют эскейп-символом (escape), а обратную косую черту вместе со следующим за ним символом — эскейп-последовательностью.

Одинарные кавычки отменяют специальные значения всех заключенных между ними метасимволов. Однако, между ними не должно быть внутренней одинарной кавычки — она будет восприниматься как закрывающая. Кроме того, иногда специальные значения некоторых внутренних метасимволов хорошо бы сохранить. Помогут двойные кавычки, которые экранируют все метасимволы кроме \, $, `, !, причем символ обратной косой черты сохраняет особое значение только в том случае, если предшествует символам $, `, ", \, или символу перевода строки.