메뉴 건너뛰기

Korea Oracle User Group

OS

Linux read 명령어 사용법

명품관 2024.01.22 14:14 조회 수 : 382

read 명령어 사용법

 

Linux의 Bash 쉘에서 read 명령어는 표준 입력에서 한 줄을 읽고

이를 필드로 나누어 활용할 수 있게 해줍니다. 

 

Linux의 read 명령어는 표준 입력(stdin)에서 입력 행을 읽고 

이를 변수에 할당할 수 있도록 해 주는 명령어입니다. 

 

read 명령어를 사용하는 방법에 대해 몇 가지 알아보도록 하겠습니다. 

 

기본 사용법 :

 

read today
monday
echo "Today is $today"
Today is monday

 

사용자가 텍스트를 입력할 때까지 기다린 후 변수 today를 입력 받아 저장합니다.

echo 명령어로 today 변수에 저장되었는지 확인할 수 있습니다. 

 

여러 값 읽기 :

 

echo "Enter two variable."
Enter two variable.
read var1 var2
monday tuesday
echo "You entered : $var1, $var2"
You entered : monday, tuesday

 

read 명령어를 통해 var1, var2 변수에 값을 저장해 봤습니다. 공백으로 두개 변수 값을 구분할 수 있습니다. 

 

자동 입력(비밀번호에 유용함) :

 

read --"Enter your password: " password
echo
echo "Password entered."

 

-s 옵션은 silent 모드로 read 명령어를 수행합니다. 비밀번호와 같은 민감한 정보를 다룰 때 유용합니다.

-p 옵션을 사용하면 프롬프트를 표시할 수 있습니다.

 

공백을 포함한 전체 줄 읽기 :

 

$ cat test.sh
IFS= read -r line
echo "You entered: $line"
 
$ sh test.sh
hello! world!!
You entered: hello! world!!

 

IFS(Internal Field Separator)를 빈 값으로 설정하고

-r 옵션(백슬래시 이스케이프가 처리되는 것을 방지하기 위함)으로 공백을 포함한 줄 입력 전체를 변수로 받을 수 있습니다. 

 

시간 초과 설정 :

 

$ cat test.sh
read -5 -"Enter your name (you have 5 seconds): " name
echo "Hello, $name"
$ sh test.sh
Enter your name (you have 5 seconds): kwan
Hello, kwan
 
-- 5초 입력 시간을 초과한 경우
$ sh test.sh
Enter your name (you have 5 seconds): Hello, 
$

 

-t 옵션은 시간 초과를 설정합니다.

 

파일에서 읽기 :

 

$ cat test.sh
while IFS= read -r line
do
  echo "Line: $line"
done < test.txt
$ cat test.txt
Hello! World!
Hello! World!
Hello! World!
Test! World!
$ sh test.sh   
Line: Hello! World!
Line: Hello! World!
Line: Hello! World!
Line: Test! World!
$

 

test.txt 의 내용을 한줄씩 Line 변수에 저장해 출력하도록 스크립트를 만들었습니다. 

 

read 명령어 옵션

 

일반적으로 사용되는 옵션 중 일부는 다음과 같습니다.

 

-r: 이 옵션은 백슬래시가 이스케이프 문자로 사용되는 것을 방지합니다. -r 사용하면 백슬래시가 리터럴 문자로 처리됩니다. 

이는 일반적으로 백슬래시 이스케이프 문자를 의도하지 않게 해석하지 않고 입력을 정확하게 읽도록 하기 위해 권장됩니다.

-p: 이 옵션을 사용하면 사용자에게 표시되는 프롬프트를 지정할 수 있습니다. 일반적으로 사용자와 상호작용하고 입력을 기다릴 사용합니다. 

예를 들어 read -p "Enter your name: " name 과 같이 "Enter your name: " 을 프롬프트에 표시한 후 사용자가 입력할 수 있게 유도합니다. 

-a array: 이 옵션은 표준 입력에서 읽고 읽은 단어를 인덱스 배열에 할당합니다. 

각 단어가 배열의 요소가 되도록 해야하는 경우 유용합니다.

-d delim: 이 옵션은 줄 바꿈 대신 입력 줄을 종료하는 구분 문자를 지정합니다. 

예를 들어 는 read -d ":" var 의 경우 콜론 문자를 만날 때까지 입력을 읽습니다.

-n num: 이 옵션은 num의 숫자만큼 캐릭터를 입력받도록 합니다. 

입력을 특정 문자 수로 제한해야 할 때 유용합니다.

-u fd: 이 옵션은 표준 입력 대신 read파일 설명자에서 입력을 읽도록 지시합니다. 

fd이는 스크립트에서 파일 설명자를 조작하는 시나리오에서 사용되는 고급 기능입니다.

-N num: -n 옵션과 유사 하지만 바이트가 아닌 문자를 읽습니다.

특히 멀티바이트 문자와 관련이 있습니다.

-E: -p 옵션과 함께 사용하면 프롬프트 문자열에서 백슬래시 이스케이프 및 줄 연속 해석을 비활성화합니다.

-i text: 이 옵션은 읽을 초기 텍스트를 제공합니다. 

사용자가 편집할 수 있는 기본값을 제공하는 데 특히 유용합니다.

 

read 명령어는 사용자 입력을 처리하고 텍스트를 구문 분석하기 위한 Bash 스크립팅의 강력한 도구입니다. 

특정 요구 사항에 맞게 위와 같은 여러 옵션을 결합해 사용할 수 있습니다.

위로