Знакомство с echo

echo - получить аргументы и вывести их на стандартный поток вывода

echo служит стандартным способом сообщения информации из Bash-скриптов.

echo можно использовать для записи данных в файл

Расширение путей

Шаблоны путей могут содержать:

      • любые символы в любом количестве
  • ? - 1 любой символ
  • [] - 1 любой символ из набора

Расширение тильды

  • ~ - путь к домашнему каталогу
  • ~USER - путь к домашнему каталогу пользователя USER

Арифметическое расширение

Bash умеет выполнять математические операции над целыми числами. Операции: сложение, умножение, деление, остаток от деления (%), возведение в тепень (**)

Арифметическое расширение имеет следующую форму:

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

$((2+2))

Раширение фигурных скобок

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

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

Для этих целей есть форма расширения фигурных скобок:

some-{element1,element2,element3} => some-element1 some-element2 some-element3

num-{1..4} => num-1 num-2 num-3 num-4

num-{1..5..2} => num-1 num-3 num-5

Расширение параметров

Bash - язык программирования, поэтому в нём есть переменные, к которым можно обращаться. Базовый уровень переменных - переменные окружения.

int main(int argc, char* argv[], char **env)

Для доступа к переменной необходимо воспользоваться синтаксисом:

$VAR

${VAR}

Вместо $VAR будет вставлено значение данной переменной. Если её нет, то пустота.

Для получения списка всех переменных окружения можно воспользоваться printenv

Расширение команд

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

Для выполнения этой задачи у нас есть 2 подхода:

  • xargs, который позволяет использовать pipe для решения задачи
  • расширение команд

Синтаксис расширения команд:

$(Команда)

`Команда`

Кавычки

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

В Bash пробел является разделителем, а некоторые пути в себе содержат эти разделители.

Двойные кавычки

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

  • Арифметика
  • Команды
  • Переменные

И двойные кавычки сохранят все пробелы, что мы в них впишем.

Одинарные кавычки

В них расширения не работают

Экранирование символов

Если мы хотим получить специальные символы, а не их обработку, то нужно их экранировать. Список специальных символов:

  • $
  • !
  • &
  • ’ ‘

Также с обратного слеша начинаются специальные непечатные символы

  • \a - проиграть звук
  • \b - символ backspace
  • \n - новая строка
  • \r - возвращение каретки
  • \t - табуляция