ГлавнаяОперационные системыLinuxКак использовать команду чтения в Linux

Как использовать команду чтения в Linux

Иногда при взаимодействии с вашей системой Linux вам может потребоваться запросить у пользователей ввод данных или прочитать вводимые данные из файлов или даже установить тайм-ауты. Вы можете выполнять эти и многие другие задачи с помощью команды readи ее различных параметров.

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

Что такое команда чтения

В Linux вы можете использовать команду readдля захвата пользовательского ввода или чтения строки из стандартного ввода (stdin). Эта команда считывает общее количество байтов из заданного файлового дескриптора и сохраняет их в буфере. После этого возвращае

Что такое команда чтения

ноль или ошибка.

Например, если число или счетчик равны нулю, это относится к концу файла. Но в случае успеха он возвращает количество прочитанных байтов. Если команда чтения обнаруживает какие-либо ошибки, она возвращает -1.

Прежде чем изучать параметры команды чтения, давайте сначала посмотрим на синтаксис команды чтения:

read [options] [name…]

Здесь параметр optionsуказывает различные флаги, которые используются для изменения поведения команды чтения. Кроме того, параметр nameуказывает имена нескольких переменных, которые используются для хранения входных данных. Если имена не указаны, введенные данные сохраняются в $REPLY переменная bash .

Читать параметры команды

Команда чтения Bash имеет множество опций для управления вводом пользователя. Некоторым параметрам не нужны дополнительные параметры, а другим — нужны.

Давайте рассмотрим некоторые параметры, которые можно использовать с командой чтения:

Параметры Описания
-a Он сохраняет входные данные в виде массива, а не отдельных переменных.
-s Выполняется автоматически, то есть ввод не отображается на терминале
-e включает поддержку библиотеки readline, позволяя читать строку ввода
-i

предоставляет начальное входное значение, которое появляется в командной строке при использовании readline
-p отображает указанное приглашение перед чтением ввода
-u <дескриптор файла> читает из указанного дескриптора файла, а не из стандартного ввода (stdin)
-d позволяет указать разделитель входной строки вместо символа новой строки по умолчанию
-t устанавливает период ожидания для ввода; если ввод не по

Читать параметры команды

ение возвращает ошибку
-r если установлено, обратная косая черта не используется рассматривается как escape-символы
-n читает только указанное количество символов

Введите следующую команду, чтобы вывести меню справки по команде чтения:

head --help

Как прочитать введенные данные с помощью команды чтения

Самый простой способ использовать команду чтения — использовать ее без каких-либо аргументов или опций. Когда вы выполняете только команду чтения, она попросит вас предоставить входные данные, которые вы хотите прочитать. После предоставления входных данных он выйдет и сохранит их в переменной по умолчанию с именем REPLY.

В качестве примера:

read
<user_input>
использование команды чтения для захвата ввода от пользователя

Теперь, после ввода данных, давайте отобразим их с помощью эхо-команда :

echo $REPLY
использование команды echo для отображения вывода переменной REPLY<

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

read variable1
<user_input>
чтение введенного пользователем значения и сохранение в определенной переменной

Теперь, чтобы отобразить результат, вам нужно использовать команду echoс переменной, в которой хранится ваше значение:

echo $variable1
отображение захваченного значения переменной с помощью команды echo

Чтение нескольких значений

Не существует прямого способа прочитать несколько значений с помощью команды read. Однако вы можете разделить одно входное предложение на несколько слов и сохранить их в разных переменных.

Давайте рассмотрим следующий пример:

read variable1 variable2 variable3
<

Как прочитать введенные данные с помощью команды чтения

ng="async" src="https://saintist.ru/wp-content/uploads/2024/07/read-multiple-values.png" alt="чтение нескольких значений и сохранение их в нескольких переменных">

Здесь вы сохраняете первое слово предложения в первой переменной, второе слово — во второй переменной, а все оставшиеся слова — в последней предоставленной переменной.

Давайте вернем вывод с помощью следующей команды:

echo <$variabl_namee>
отображение нескольких значений с помощью команды echo

Чтение из файла

Хотя чтение предназначено в первую очередь для ввода данных пользователем, его также можно использовать для чтения строк из файла. Для этого просто используйте цикл while, команду echoи команду read, за которыми следует определенное имя переменной:

while read line; do
echo "$line"
done < samplefile.txt

чтение из файла с помощью команды чтения

Здесь цикл whileсчитывает каждую строку файла «samplefile.txt» и записывает ее в переменную line. После чтения всех строк файла команда echoпоказывает значение строки.

Циклическое чтение ввода

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

Например, давайте прочитаем несколько входных данных и отобразим их на терминале:

while read line; do
echo "Line: $line"
done
чтение входного значения от пользователя в непрерывном цикле

Более того, цикл продолжается до тех пор, пока не будет получен сигнал конца файла (EOF), обычно путем нажатия Ctrl+ D.

Как запросить ввод с помощью команды чтения

Вы также можете создавать интерактивные подсказки, которые будут отображаться перед вводом пользователя. Это можно сделать, используя параметр -pвместе с командой чтения.

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

readЧтение нескольких значений Name: " name
создание подсказки перед чтением ввода от пользователя

Ограничение ввода данных пользователем во время чтения

Хотите контролировать, какие данные могут вводить пользователи? Используйте опцию -nс read, чтобы указать желаемую длину символов. Например, если вы хотите записать первые 4 символа пользовательского ввода, используйте следующую команду:

read -n 9 variable
чтение ввода на основе указанного значения символа

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

Разделение полей вывода с помощью IFS

Вы можете использовать переменную внутреннего разделителя полей (IFS) с командой чтения, чтобы определить, как разделить входные данные на отдельные поля. По умолчанию IFS использует пробельные символы (табуляция, новая строка и пробел) в качестве разделителей полей. Однако вы можете настроить IFS в соответствии со своими потребностями.

Например, в качестве разделителя можно указать двоеточие (:):

IFS=':' read name password
<user_input>
echo "Name: $name, 

Чтение из файла

d
"
чтение и разделение значения на основе заданного значения разделителя

С помощью переменной IFS вы можете захватывать несколько введенных пользователем строк и разделять их по значению разделителя.

Настройка тайм-аута чтения

Вы также можете настроить таймаут для команды чтения, используя опцию -t. Это полезно, если вы хотите убедиться, что сценарий не будет зависеть от пользовательского ввода в течение длительного времени.

Давайте установим 10-секундный тайм-аут, используя параметр -t:

read -t 10 -p "Enter your name (10 seconds timeout): " name 
<user_input>
echo "Hello, $name!"
чтение входного значения в течение заданного времени

Если пользователь ничего не вводит в течение 10 секунд,

Циклическое чтение ввода

Как скрыть ввод пользователя

Иногда вам может потребоваться скрыть вводимые пользователем данные, например, при вводе конфиденциальной информации, например паролей. Этого можно добиться, используя параметр -sкоманды чтения:

read -s -p "Enter your password: " password
<user_input>
использование опции -s с командой чтения, чтобы скрыть информацию

После сохранения пароля в указанной переменной вы можете отобразить его в терминале с помощью команды echo:

echo -e "\nPassword: $password"
отображение захваченного пароля с использованием опции -e и команды echo

Здесь флаг -eпозволяет интерпретировать escape-последовательности, а escape-последовательность \nдобавляет новую строку перед выводом.

Подведение итогов

Как запросить ввод с помощью команды чтения

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

Изображение предоставлено: Габриэль Хейнцер через Unsplash . Все скриншоты сделаны Харуном Джаведом.

Ограничение ввода данных пользователем во время чтения

Разделение полей вывода с помощью IFS

Настройка тайм-аута чтения

Как скрыть ввод пользователя

Подведение итогов

ПОХОЖИЕ СТАТЬИ

Популярные записи