개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트: 리다이렉션(Redirection) 사용법과 예제 - >, >>, &>, <, <<, <<<, 2>&1

일요일좋아하는사람 2025. 5. 10. 10:23
728x90
반응형

리눅스나 유닉스 계열의 운영체제에서 bash는 매우 강력한 셸 도구로, 다양한 작업을 자동화하거나 스크립트화할 수 있습니다. 그중에서도 "리다이렉션(Redirection)" 기능은 출력 결과나 에러 메시지를 원하는 위치로 보낼 수 있게 해주는 중요한 기능입니다.

이번 글에서는 bash의 리다이렉션에 대해 하나씩 자세히 알아보고, 각각의 기능이 어떤 역할을 하며 어떻게 사용하는지, 그리고 실제 예제를 통해 결과가 어떻게 나오는지까지 살펴보겠습니다.

리다이렉션의 역할

다이렉션은 기본적으로 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)를 제어하는 기능입니다. 즉, 명령어의 입력을 파일에서 읽어오거나, 명령어 실행 결과를 다른 파일에 저장하거나, 에러 메시지만 따로 다른 파일로 보낼 수 있습니다.

기본적으로 bash는 다음과 같은 세 가지 스트림을 제공합니다:

  • 표준 입력(stdin): 파일 디스크립터 번호 0
  • 표준 출력(stdout): 파일 디스크립터 번호 1
  • 표준 에러(stderr): 파일 디스크립터 번호 2

이 파일 디스크립터를 이용해 리다이렉션을 수행합니다.


1. > (표준 출력 리다이렉션)

역할: 명령어의 표준 출력을 파일로 보냅니다. 기존 파일이 있을 경우 내용을 덮어씁니다.

사용법: 명령어 > 파일이름

예제:

ls > list.txt

결과: 현재 디렉토리의 파일 목록이 list.txt 파일에 저장되고, 터미널에는 출력되지 않습니다.


2. >> (표준 출력 추가 리다이렉션)

역할: 표준 출력을 파일에 추가합니다. 기존 내용은 유지되고, 새로운 출력만 추가됩니다.

사용법: 명령어 >> 파일이름

예제:

echo "새 줄입니다." >> list.txt

결과: list.txt 파일에 "새 줄입니다."라는 문자열이 기존 내용 뒤에 추가됩니다.


3. 2> (표준 에러 리다이렉션)

역할: 표준 에러 출력을 파일로 보냅니다.

사용법: 명령어 2> 파일이름

예제:

ls 없는파일 2> error.log

결과: 존재하지 않는 파일에 대한 에러 메시지가 error.log 파일에 저장됩니다.


4. &> (표준 출력과 에러 모두 리다이렉션)

역할: 표준 출력과 표준 에러를 모두 같은 파일로 보냅니다.

사용법: 명령어 &> 파일이름

예제:

ls /tmp /없는디렉토리 &> result.log

결과: 존재하는 디렉토리 /tmp의 출력과, 존재하지 않는 디렉토리에 대한 에러가 모두 result.log에 저장됩니다.


5. < (표준 입력 리다이렉션)

역할: 명령어의 입력을 파일에서 가져옵니다.

사용법: 명령어 < 파일이름

예제:

wc -l < list.txt

결과: list.txt 파일의 라인 수를 출력합니다.


6. << (Here Document)

역할: 여러 줄의 문자열을 명령어의 입력으로 제공합니다.

사용법:

명령어 << DELIMITER
입력 내용
DELIMITER

예제:

cat << EOF
이것은
여러 줄입니다.
EOF

결과: cat 명령어가 여러 줄을 출력합니다.


7. <<< (Here String)

역할: 한 줄의 문자열을 명령어의 입력으로 제공합니다.

사용법: 명령어 <<< "문자열"

예제:

wc -w <<< "여기에 단어가 있습니다."

결과: 주어진 문자열의 단어 수를 출력합니다.


8. 2>&1 (에러를 출력과 동일하게 리다이렉션)

역할: 표준 에러를 표준 출력으로 리다이렉션합니다.

사용법: 명령어 > 파일 2>&1

예제:

ls /tmp /없는디렉토리 > result.log 2>&1

결과: 표준 출력과 표준 에러가 모두 result.log에 기록됩니다.


이처럼 bash에서 제공하는 다양한 다이렉션 기능을 적절히 활용하면 스크립트를 보다 유연하고 강력하게 만들 수 있습니다. 단순한 출력 저장부터 복잡한 에러 처리까지, 다이렉션은 꼭 알아야 할 핵심 기능입니다.

 

728x90
반응형