BASH. Часть 2. Специальные символы.

Оболочка bash использует несколько символов из числа 256 символов набора ASCII в специальных целях либо для обозначения некоторых операций, либо для преобразования выражений. В число таких символов входят:

— ~ ! @ # $ % ^ & * ( ) — [ ] { } : ; ‘ » / > <

а также символ с кодом “0” (ноль), символ возврата каретки (генерируемый клавишей ) и пробел. В зависимости от ситуации эти специальные символы могут трактоваться либо в их специальном значении, либо в буквальном, т. е. как литералы. Но мы в основном будем предполагать, что все эти символы зарезервированы и не должны использоваться в качестве литералов.

 

Это касается в первую очередь использования их в именах файлов и каталогов. Однако символы (_) , (-) и (.) (знак подчеркивания, дефис и точка) часто используются в именах файлов, так что именно этот пример показывает, что специальное значение эти символы имеют не всегда. В именах файлов только символы точки (.) и слэша (/) имеют специальное значение. Символ слэша служит для разделения имен отдельных каталогов, а точка имеет специальное значение, только если она является первым символом в имени файла (что означает, что файл является «скрытым»).

 

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

 

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

[user]$ ср two_words twowords

Символы ‘ и » (одинарные и двойные кавычки) могут быть названы «символами цитирования». Любой из этих символов всегда используется в паре с его копией для обрамления какого-то выражения. Если какой-то текст взят в одинарные кавычки, то все символы внутри этих кавычек воспринимаются как литералы, никаким из них не придается специального значения. Если вернуться к тому же примеру с пробелами в имени файла, то можно сказать, что для того, чтобы дать файлу имя «two words» надо взять имя в кавычки:

[user]$ ср two_words ‘two words’

Различие в использовании символов (‘) и («) состоит в том, что внутри одинарных кавычек теряют специальное значение все символы, а внутри двойных кавычек — все специальные символы кроме ($), (‘) и () (знака доллара, одинарных кавычек и обратного слэша).

Другие части:

BASH. Часть 1. Введение.
BASH. Часть 2. Специальные символы.
BASH. Часть 3. Выполнение команд.
BASH. Часть 4. Стандартный ввод/вывод.
BASH. Часть 5. Параметры и переменные. Окружение оболочки.
BASH. Часть 6. Раскрытие выражений

Из книги Виктора Костромина «Linux для пользователя».