У файлов или каталогов с точкой нет ничего особенного. Некоторые команды по умолчанию не показывают их, чтобы при отображении содержимого домашнего каталога вы не увидели полнейшую неразбериху. Так, например, команда ls не показывает файлы с точкой, если не указан параметр -a. Кроме того, паттерны оболочки не рассматривают файлы с точкой, если вы намеренно не укажете это с помощью шаблона .*.
примечание
У вас могут возникнуть трудности с шаблонами, поскольку комбинации .* соответствуют варианты . и .. (то есть текущий и родительский каталоги). Следует использовать шаблоны вроде .[^.]* или .??*, чтобы получить список всех файлов с точкой, кроме текущего и родительского каталогов.
2.8. Переменные окружения и оболочки
Оболочка может хранить временные переменные, которые называются переменными оболочки и содержат значения текстовых строк. Переменные оболочки весьма полезны для отслеживания значений в сценариях. Некоторые переменные оболочки контролируют режим работы оболочки (например, оболочка bash считывает значение переменной PS1 перед отображением приглашения).
Чтобы присвоить значение переменной оболочки, используйте знак равенства (=). Вот простой пример:
$ STUFF=blah
В этом примере переменной с именем STUFF присваивается значение blah. Чтобы обратиться к этой переменной, применяйте синтаксис $STUFF (попробуйте, например, запустить команду echo $STUFF). Множество вариантов использования переменных оболочки приведено в главе 11.
Переменная окружения подобна переменной оболочки, но она не является привязанной к оболочке. Все процессы в системах Unix пользуются хранилищем переменных окружения. Основное отличие переменных окружения от переменных оболочки заключается в том, что операционная система передает все переменные окружения вашей оболочки командам, запускаемым оболочкой, в то время как переменные оболочки не могут быть доступны командам, которые вы запускаете.
Назначение переменной окружения производится с помощью команды export. Если, например, вы желаете сделать переменную оболочки $STUFF переменной окружения, используйте следующий синтаксис:
$ STUFF=blah
$ export STUFF
Переменные окружения практичны, поскольку многие команды считывают из них значения своих настроек и параметров. Например, вы можете поместить ваши излюбленные параметры для команды less в переменную окружения LESS, и тогда команда less будет использовать их при запуске. Многие страницы руководства содержат раздел с названием Environment («Окружение»), в котором описаны такие переменные.
2.9. Командный путь
PATH является специальной переменной окружения, которая содержит командный путь, или просто путь. Командный путь — это перечень системных каталогов, которые просматривает оболочка, пытаясь найти какую-либо команду. Например, когда вы запускаете команду ls, оболочка просматривает каталоги, перечисленные в переменной PATH, в поисках команды ls. Если команда встречается сразу в нескольких каталогах, оболочка запустит первый найденный экземпляр.
Если вы запустите команду echo $PATH, вы увидите, что компоненты пути отделены с помощью двоеточия (:). Например, так:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
Чтобы указать оболочке дополнительные места для поиска команд, измените переменную окружения PATH. Например, с помощью приведенной ниже команды можно добавить в начало пути каталог dir, чтобы оболочка начала просмотр каталогов с него, до других каталогов из переменной PATH.
$ PATH=dir:$PATH
Можно также добавить название каталога в конец переменной PATH, тогда оболочка обратится к нему в последнюю очередь:
$ PATH=$PATH:dir
примечание
Будьте осторожны при изменении пути, поскольку вы можете случайно полностью стереть его, если неправильно наберете $PATH. Если это случилось, не следует паниковать. Ущерб не является необратимым, вы можете просто запустить новую оболочку. Чтобы сильнее нарушить работу, необходимо сделать ошибку при редактировании некоторого файла конфигурации, но даже и в этом случае ее нетрудно исправить. Один из простейших способов вернуться в нормальное состояние — закрыть текущее окно терминала и открыть другое.
2.10. Специальные символы
Вам следует знать названия некоторых специальных символов системы Linux. Если вам нравятся вещи подобного рода, загляните на страницу Jargon File (http://www.catb.org/jargon/html/) или посмотрите ее печатную версию в книге The New Hacker’s Dictionary («Новый словарь хакера») (MIT Press, 1996).
В табл. 2.1 описан набор специальных символов, многие из них вы уже встречали в этой главе. Некоторые утилиты, например язык программирования Perl, используют почти все эти символы! Помните о том, что здесь приведены американские варианты названий символов.
Таблица 2.1. Специальные символы
Символ
Название
Применение
*
Звездочка
Регулярные выражения, джокерные символы
.
Точка
Текущий каталог, разделитель имени файла и хоста
!
Восклицательный знак
Отрицание, история команд
|
Вертикальная черта
Командный конвейер
/
Прямой слеш
Разделитель каталогов, команда поиска
\
Обратный слеш
Литералы, макросы (но не каталоги)
$
Доллар
Обозначение переменной, конец строки
'
Одиночная кавычка
Буквенные строки
`
«Обратная галочка»
Замена команды
"
Двойная кавычка
Частично буквенные строки
^
Знак вставки
Отрицание, начало строки
~
Тильда
Отрицание, ярлык каталога
#
Диез, знак фунта
Комментарии, препроцессор, подстановки
[ ]
Квадратные скобки
Массивы
{ }
Фигурные скобки
Блоки инструкций, массивы
_
Подчеркивание
Просто замена символа пробела
примечание
Вам часто будут встречаться символы, снабженные знаком вставки; например, ^C вместо Ctrl+С.
2.11. Редактирование командной строки
Во время работы с оболочкой обратите внимание, что вы можете редактировать командную строку, используя клавиши
Кроме того, вместо них можно применять управляющие сочетания клавиш. Если вы запомните сочетания, перечисленные в табл. 2.2, то обнаружите, что у вас появились дополнительные возможности ввода текста во многих командах Unix по сравнению с использованием стандартных клавиш.
Таблица 2.2. Сочетания клавиш для командной строки
Сочетание клавиш
Действие
Ctrl+B
Перемещение курсора влево
Ctrl+F
Перемещение курсора вправо