Linux – одна из самых популярных операционных систем. Она может быть непривычна тем, кто долгое время пользовался Windows. Связано это не только с особенностями интерфейса, но и с системой управления. В Linux она организована преимущественно через специальную оболочку.

Далее предстоит изучить The Linux Shell, а также команду the read. Эта информация пригодится как новичкам, так и более опытным пользователям/администраторам.

Linux Shell

Bourne Shell – это оболочка или терминал. Специальная консоль, используемая для выполнения различных команд в операционных системах Linux (Ubuntu и других). Командная строка, представленная текстовым интерфейсом пользователя. Он через команды отправляется к машине.

По умолчанию язык оболочки в Линукс называется the bash. Он базируется преимущественно на текстовых «запросах». Каждая обрабатываемая команда должна быть прописана в оболочке. Это – ключевое отличие от поведения пользователей в Windows, где навигация используется по принципу «найти-навести-нажать».

Синтаксис команд

The bash имеет определенный синтаксис in the Shell. Команды строятся по форме:

{команда} {список передаваемых аргументов}.

Пример – grep -inr. Данная команда используется to the поиска текстовых строк. –inr здесь является флагами или аргументами, которые будут менять то, что grep выполнит по умолчанию.

Команда read – характеристика

В Линуксе много различных команд, работающих на bash. Один из наиболее распространенных вариантов – это read. Эта операция представляет собой некий способ взаимодействия пользователей с вводом с клавиатуры, который отображается в качестве стандартного (stdin). Сюда же относят другие схожие описания.

The read является встроенной в bash shells «инструкцией». Она служит противоположностью командам printf и echo. Используется, если необходимо, чтобы bash-скрипт принимал пользовательский ввод.

Read в Linux:

  • считывает строчку из стандартного ввода или файлового дескриптора (of the file descriptor);
  • разбивает строчку на два слова;
  • первое слово присваивается первому имени;
  • второе – второму и так далее.

The read имеет простую форму представления:

read [options] [name…]

Если слов, считываемых из входного потока меньше имен, оставшимся именам будут присваиваться пустые значения. Для того, чтобы разбить строку for слова или лексемы, необходимо использовать символы, хранящиеся в переменной IFS. Для отмены особого свойства следующего символьного значения или продолжения строки потребуется использование символ обратного слеша. Если имена не указываются, reading string назначается переменной REPLY.

Параметры

The read обладает различными параметрами, которые can be used в bash-script. Перед изучением нескольких наглядных примеров для изучения принципов функционирования соответствующей инструкции необходимо изучить эти характеристики.

Название параметраХарактеристика
-a anameСлова будут присваиваться подряд идущим элементам массива (in a array) Aname. Индекс начинается с 0. Перед присваиванием все компоненты удаляются из aname. Другие аргументы name будут проигнорированы.
-d delimЗавершающим элементов входной строки используется is a symbol delim.
-eЧтение строки. Для этого используется readline.
-n ncharsThe read вернет управление после чтения символов nchars. Завершения ввода строки не будет ожидаться.
-p promptПеред тем как reads входные данные, сначала выдается prompt. Он не завершается символом перевода строки. Соответствующий компонент приглашения отображается тогда, когда входные данные поступают с терминала.
-rЕсли задан соответствующий параметр, обратный слеш не будет использоваться для отмены свойств специальных символов. Он рассматривается в качестве части строки.
-sТихий режим. The read –s работает легко – эхо-ответ не выдается, если входная информация поступает с терминала.
-t timeoutЕсли в течение timeout секунд чтение входной строки не завершается, the read получает состояние таймаута and the code неудачной обработки «инструкции» будет возвращен в качестве ответа. Параметр не работает, когда the read читает входные данные не из терминала или конвейера.
-u fdЧтение входных данных из дескриптора файла fd.

Все эти параметры могут быть включены в your bash-скрипт. Далее предстоит изучить несколько наглядных примеров, помогающих понять принципы функционирования the read s.

Команда без параметров

Чтобы начать использование изучаемой команды без параметров, потребуется нажать Enter. Это позволит начать захват. Система захватывает ввод до тех пор, пока клиент снова не нажмет на Enter.

По умолчанию информация хранится в переменной с именем $REPLY.

Линукс и read

Здесь символ стрелки, смотрящей to a left, отображается при нажатии на клавишу Enter. Специально объявлять $REPLY не потребуется.

Для объявления собственной переменной while read достаточно ввести ее имя. Для вызова соответствующего компонента предстоит использовать знак «доллара» перед «названием» переменной.

Вот – пример, в котором создается переменная AndreyEx. Ей будет присваиваться значение ввода:

Линукс и read

При использовании read s (и других параметров команды) необходимо помнить – имена переменных являются чувствительными к регистру.

Подсказка

Второй пример – когда необходимо захватить ввод пользователя при написании сценария. Существует опция to read, которая создает подсказки. Они требуются для упрощения кода.

Echo-команды и дополнительные строки для создания подсказок не понадобятся. Достаточно использовать again the read с флагом -p:

Линукс и read

Текст, которые будет вводиться в кавычках, отображается так, как задумано User does not click to Enter, чтобы начать ввод данных. Результат сохраняется в переменной $username.

Использование тихой опции

The read s – это тихая опция. Вот bash-скрипт, который поможет лучше разобраться с соответствующим флагом:

Линукс и read

Скрипт называется secret.sh. При его обработке на экране появится такая ситуация:

Линукс и read

Опция s в read маскировала ввод при указании пароля. Это поверхностный метод. Он не предполагает реального обеспечения безопасности.

Ограничения символов

Ограничения по вводимым символам – еще одна операция, которую легко to do. Пусть ограничение устанавливается на длине n. Ниже – пример, в котором допускается ввод не более 5 символов.

Линукс и read

Достаточно в предыдущий пример добавить -n N, где N – это номер выбора. В случае с примером для пароля результат обработки скрипта станет таким:

Линукс и read

Сценарий перестал собирать ввод после 5 символов пользовательского имени. Меньшее количество «составляющих» все еще доступно. Если необходимо наложить на соответствующую возможность ограничения, потребуется использовать запись -N. Соответствующая модификация требует от пользователя ввода строго установленного количества символов.

Хранение данных в массиве

The read может использоваться для формирования собственных массивов. Это значит, что пользователь сможет указать «части» ввода для элементов в массиве. По умолчанию «пробел» на клавиатуре служит разделителем.

Линукс и read

При работе с массивами необходимо запомнить следующее:

  • элементы массива разделяются пробелами;
  • при помещении только переменной @, она будет повторяться и печатать весь цикл;
  • символ @ используется для предоставления элемента, после двоеточий указывается итерация от индекса 0 до 3 (согласно предложенному примеру);
  • происходит печать элемента с индексом 0.

Если даны и массив, и имя переменной, все слова будут присваиваться массиву.

Функция тайм-аута

К the read можно добавить тайм-аут. Если за отведенное время не произойдет ввод данных, приложение или продолжит работу, или завершится.

Линукс и read

В заданном примере терминал подождал 3 секунды, после чего завершил чтение приложения. Здесь можно увидеть видео-урок по the read в Линуксе. Лучше изучить эту команду, как и другие в bash, помогут дистанционные компьютерные курсы.

Интересует Linux и системное администрирование? Добро пожаловать на курс в Otus!