Linux에서 read 명령을 사용하는 방법

Linux에서 read 명령을 사용하는 방법
명령 기능 이미지 읽기

때때로 Linux 시스템과 상호 작용하는 동안 사용자에게 입력을 요청하거나 파일에서 입력을 읽어야 하거나 심지어 시간 초과를 설정해야 할 수도 있습니다. 이러한 작업과 기타 많은 작업을 명령 read과 다양한 옵션으로 수행할 수 있습니다.

read이 문서 에서는 다양한 코드 예제를 통해 명령과 옵션 의 기본을 알려드립니다 .

읽기 명령이란 무엇입니까?

Linux에서 이 read명령을 사용하여 사용자 입력을 캡처하거나 표준 입력(stdin)에서 줄을 읽을 수 있습니다. 이 명령은 주어진 파일 설명자에서 총 바이트 수를 읽고 버퍼에 저장합니다. 그 후 읽은 바이트 수, 0 또는 오류를 반환합니다.

예를 들어, 숫자나 카운트가 0이면 파일의 끝을 나타냅니다. 하지만 성공하면 읽은 바이트 수를 반환합니다. 읽기 명령이 오류를 발견하면 -1을 반환합니다.

읽기 명령 옵션을 살펴보기 전에 먼저 읽기 명령의 구문을 살펴보겠습니다.

여기서 options매개변수는 read 명령의 동작을 수정하는 데 사용되는 다양한 플래그를 지정합니다. 또한 매개 name변수는 입력을 저장하는 데 사용되는 여러 변수의 이름을 지정합니다. 이름을 제공하지 않으면 입력은 bash 변수에 보관됩니다 $REPLY.

명령 옵션 읽기

Bash read 명령에는 사용자 입력을 제어하는 ​​많은 옵션이 있습니다. 일부 옵션은 추가 매개변수가 필요하지 않지만 다른 옵션은 필요합니다.

read 명령과 함께 사용할 수 있는 몇 가지 옵션을 살펴보겠습니다.

옵션 설명
-a <배열> 입력 내용을 별도의 변수로 저장하는 대신 배열로 저장합니다.
-에스 조용히 실행되므로 입력이 터미널에 표시되지 않습니다.
-그것은 readline 라이브러리 지원을 활성화하여 입력 줄을 읽을 수 있습니다.
-i <접두사> readline을 사용할 때 프롬프트에 나타나는 초기 입력 값을 제공합니다.
-p <프롬프트> 입력을 읽기 전에 지정된 프롬프트를 표시합니다.
-u <파일 설명자> 표준 입력(stdin)이 아닌 지정된 파일 기술자에서 읽습니다.
-d <구분문자> 기본 줄바꿈 문자 대신 입력 줄 구분 기호를 지정할 수 있습니다.
-t <시간> 입력에 대한 시간 초과 기간을 설정합니다. 이 시간 내에 입력을 받지 못하면 read는 실패를 반환합니다.
-아르 자형 설정된 경우 백슬래시는 이스케이프 문자로 처리되지 않습니다.
-n <숫자> 지정된 수의 문자만 읽습니다

다음 명령을 입력하여 읽기 명령 도움말 메뉴를 출력하세요.

Read 명령을 사용하여 입력을 읽는 방법

read 명령을 사용하는 가장 간단한 방법은 인수나 옵션 없이 사용하는 것입니다. read 명령만 실행하면 읽고 싶은 입력을 제공하라는 메시지가 표시됩니다. 입력을 제공한 후 종료하고 기본 변수인 .에 저장합니다 REPLY.

예를 들어 다음 내용을 살펴보겠습니다.

read 명령을 사용하여 사용자 입력을 캡처합니다.

이제 입력을 제공한 후 echo 명령을 사용하여 표시해 보겠습니다.

echo 명령을 사용하여 REPLY 변수의 출력을 표시합니다.

입력 값을 읽는 동안 다른 특정 변수에 저장할 수도 있습니다. 예를 들어 결과를 변수에 저장하려면 명령을 입력 read한 다음 변수 이름을 입력합니다.

사용자 입력 값을 읽고 특정 변수에 저장

echo이제 결과를 표시하려면 값을 저장하는 변수와 함께 명령을 사용해야 합니다 .

echo 명령을 사용하여 캡처된 변수 값 표시

여러 값 읽기

명령 을 사용하여 여러 값을 읽는 직접적인 방법은 없습니다 read. 그러나 단일 입력 문장을 여러 단어로 분할하여 다른 변수에 저장할 수 있습니다.

다음 예를 살펴보겠습니다.

여러 값을 읽고 여러 변수에 저장

여기서는 문장의 첫 번째 단어를 첫 번째 변수에 저장하고, 두 번째 단어를 두 번째 변수에 저장하고, 나머지 모든 단어를 마지막으로 제공된 변수에 저장합니다.

다음 명령을 사용하여 출력을 반환해 보겠습니다.

echo 명령을 사용하여 여러 값 표시

파일에서 읽기

read는 주로 사용자 입력을 위한 것이지만, 파일에서 줄을 읽는 데 사용할 수도 있습니다. 이를 위해 루프 while, echo명령, read명령을 사용하고 그 뒤에 특정 변수 이름을 사용하면 됩니다.

read 명령을 사용하여 파일에서 읽기

여기서 while루프는 “samplefile.txt”의 각 줄을 읽고 변수에 기록합니다 line. 파일의 모든 줄을 읽은 후 echo명령은 줄의 값을 표시합니다.

루프에서 입력 읽기

while 루프와 함께 read를 사용하여 반복되는 시퀀스에서 사용자 입력을 캡처할 수도 있습니다. 이는 여러 입력을 수집하거나 특정 조건이 충족될 때까지 계속하려는 경우에 유용합니다.

예를 들어, 여러 입력을 읽고 터미널에 표시해 보겠습니다.

연속 루프에서 사용자로부터 입력 값 읽기

Ctrl게다가 루프는 보통 + 를 눌러서 파일 끝(EOF) 신호를 받을 때까지 계속됩니다 D.

Read 명령을 사용하여 입력을 촉구하는 방법

사용자 입력 전에 표시되는 대화형 프롬프트를 만들 수도 있습니다. -pread 명령과 함께 옵션을 사용하여 이를 수행할 수 있습니다.

사용자 정의 프롬프트를 표시하고 입력도 캡처해 보겠습니다.

사용자 입력을 읽기 전에 프롬프트 생성

읽는 동안 사용자 입력 제한

사용자가 입력할 수 있는 내용을 제어하고 싶으신가요? -nread와 함께 옵션을 사용하여 원하는 문자 길이를 지정하세요. 예를 들어, 사용자 입력의 처음 4자를 캡처하려면 아래 명령을 사용하세요.

지정된 문자 값에 따라 입력 읽기

위의 명령을 실행한 후에는 9자만 입력할 수 있습니다. 읽는 동안 사용자 입력을 제한하면 구분 기호가 필요 없게 되고 입력 내용을 단어로 나누지 않습니다.

IFS를 사용하여 출력 필드 분리

IFS(Internal Field Separator) 변수를 read 명령과 함께 사용하여 입력을 개별 필드로 분할하는 방법을 결정할 수 있습니다. 기본적으로 IFS는 공백 문자(탭, 줄바꿈 및 공백)를 필드 구분 기호로 사용합니다. 그러나 필요에 맞게 IFS를 사용자 정의할 수 있습니다.

예를 들어, 콜론(:) 값을 구분 기호로 지정할 수 있습니다.

주어진 구분 기호 값을 기준으로 값을 읽고 분할합니다.

IFS 변수를 사용하면 사용자로부터 여러 줄 입력을 캡처하여 구분 기호 값에 따라 구분할 수 있습니다.

읽기 시간 초과 설정

옵션 을 사용하여 읽기 명령에 대한 시간 초과를 구성할 수도 있습니다 -t. 스크립트가 오랫동안 사용자 입력에 의존하지 않도록 하려는 경우 유용합니다.

다음 옵션 을 사용하여 10초의 시간 초과를 설정해 보겠습니다 -t.

주어진 시간 내에 입력 값을 읽는다

사용자가 10초 동안 아무것도 입력하지 않으면 스크립트가 계속 실행됩니다.

사용자 입력을 숨기는 방법

때로는 비밀번호와 같은 민감한 정보를 입력할 때와 같이 사용자 입력을 숨기고 싶을 수 있습니다. -sread 명령의 옵션을 사용하여 이를 달성할 수 있습니다.

read 명령과 함께 -s 옵션을 사용하여 정보를 숨깁니다.

지정된 변수에 비밀번호를 저장한 후 다음 명령을 사용하여 터미널에서 비밀번호를 표시할 수 있습니다 echo.

-e 옵션과 echo 명령을 사용하여 캡처된 비밀번호 표시

여기서 -e플래그는 이스케이프 시퀀스의 해석을 허용하고, \n이스케이프 시퀀스는 출력 앞에 새 줄을 추가합니다.

마무리

이 기사를 다 읽고 예제를 훑어볼 때쯤이면 Linux 터미널에서 read 명령을 사용하는 데 익숙해질 것입니다. 하지만 탐색할 명령이 몇 가지 더 있습니다. 계속 읽어서 초보자를 위한 기본 명령을 알아보세요.

이미지 출처: Gabriel Heinzer via Unsplash . 모든 스크린샷은 Haroon Javed가 촬영했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다