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 nchars | The 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.
Здесь символ стрелки, смотрящей to a left, отображается при нажатии на клавишу Enter. Специально объявлять $REPLY не потребуется.
Для объявления собственной переменной while read достаточно ввести ее имя. Для вызова соответствующего компонента предстоит использовать знак «доллара» перед «названием» переменной.
Вот – пример, в котором создается переменная AndreyEx. Ей будет присваиваться значение ввода:
При использовании read s (и других параметров команды) необходимо помнить – имена переменных являются чувствительными к регистру.
Подсказка
Второй пример – когда необходимо захватить ввод пользователя при написании сценария. Существует опция to read, которая создает подсказки. Они требуются для упрощения кода.
Echo-команды и дополнительные строки для создания подсказок не понадобятся. Достаточно использовать again the read с флагом -p:
Текст, которые будет вводиться в кавычках, отображается так, как задумано User does not click to Enter, чтобы начать ввод данных. Результат сохраняется в переменной $username.
Использование тихой опции
The read s – это тихая опция. Вот bash-скрипт, который поможет лучше разобраться с соответствующим флагом:
Скрипт называется secret.sh. При его обработке на экране появится такая ситуация:
Опция s в read маскировала ввод при указании пароля. Это поверхностный метод. Он не предполагает реального обеспечения безопасности.
Ограничения символов
Ограничения по вводимым символам – еще одна операция, которую легко to do. Пусть ограничение устанавливается на длине n. Ниже – пример, в котором допускается ввод не более 5 символов.
Достаточно в предыдущий пример добавить -n N, где N – это номер выбора. В случае с примером для пароля результат обработки скрипта станет таким:
Сценарий перестал собирать ввод после 5 символов пользовательского имени. Меньшее количество «составляющих» все еще доступно. Если необходимо наложить на соответствующую возможность ограничения, потребуется использовать запись -N. Соответствующая модификация требует от пользователя ввода строго установленного количества символов.
Хранение данных в массиве
The read может использоваться для формирования собственных массивов. Это значит, что пользователь сможет указать «части» ввода для элементов в массиве. По умолчанию «пробел» на клавиатуре служит разделителем.
При работе с массивами необходимо запомнить следующее:
- элементы массива разделяются пробелами;
- при помещении только переменной @, она будет повторяться и печатать весь цикл;
- символ @ используется для предоставления элемента, после двоеточий указывается итерация от индекса 0 до 3 (согласно предложенному примеру);
- происходит печать элемента с индексом 0.
Если даны и массив, и имя переменной, все слова будут присваиваться массиву.
Функция тайм-аута
К the read можно добавить тайм-аут. Если за отведенное время не произойдет ввод данных, приложение или продолжит работу, или завершится.
В заданном примере терминал подождал 3 секунды, после чего завершил чтение приложения. Здесь можно увидеть видео-урок по the read в Линуксе. Лучше изучить эту команду, как и другие в bash, помогут дистанционные компьютерные курсы.
Интересует Linux и системное администрирование? Добро пожаловать на курс в Otus!