Командная строка Linux. Полное руководство (Шоттс) - страница 46

[me@linuxbox ~]$ echo ~

/home/me

Если в системе существует учетная запись пользователя foo, тогда

[me@linuxbox ~]$ echo ~foo

/home/foo

подстановка пути для скрытых файлов

Как мы знаем, файлы с именами, начинающимися с точки, считаются скрытыми. Механизм подстановки пути также учитывает это. Подстановка, такая как

echo *

не покажет скрытые файлы.

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

echo .*

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

ls -d .* | less

Чтобы обеспечить правильную подстановку пути в такой ситуации, следует использовать специализированный шаблон. Следующий шаблон действует правильно:

ls -d .[!.]?*

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

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


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

[me@linuxbox ~]$ echo $((2 + 2))

4

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

$((выражение))

где выражение — это арифметическое выражение, состоящее из значений и арифметических операторов.

Механизм подстановки арифметических выражений позволяет использовать только целые числа (невещественные), зато поддерживает множество арифметических операций. В табл. 7.1 перечислены некоторые из поддерживаемых операторов.

Таблица 7.1. Арифметические операторы

Оператор

Описание

+

Сложение

-

Вычитание

*

Умножение

/

Деление (но помните: из-за того, что подстановка поддерживает только целочисленную арифметику, результатом будет целое число)

%

Деление по модулю или остаток от деления

**

Возведение в степень


Пробелы в арифметических выражениях не играют роли, а выражения могут содержать вложенные выражения. Например, умножение 52 на 3:

[me@linuxbox ~]$ echo $(($((5**2)) * 3))

75

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