'exec'를 이용한 리디렉션
exec
명령은 Bash 쉘에서 현재 쉘 프로세스를 다른 프로그램으로 대체하는 데 사용됩니다. 일반적으로 exec
는 쉘 스크립트 내에서 다른 명령을 실행할 때 자체 쉘을 종료하고 해당 명령을 시작점으로 사용하게 합니다. 그러나 exec
는 또한 파일 디스크립터를 재지정하는 데 사용될 수 있어, 표준 출력, 표준 입력 또는 표준 오류를 파일로 리디렉션 할 수 있습니다.
exec
를 이용한 출력 리디렉션 예시
다음은 exec
명령을 사용하여 모든 쉘 스크립트 출력을 파일로 리디렉션 하는 예시입니다:
#!/bin/bash
# 모든 출력을 output.txt 파일로 리디렉션
exec > output.txt
# 이제부터 모든 출력은 output.txt로 갑니다
echo "이 메시지는 output.txt 파일에 저장됩니다."
ls
# 스크립트의 나머지 부분도 output.txt에 계속 기록됩니다
위 스크립트에서 exec > output.txt
명령은 현재 쉘의 표준 출력을 output.txt
파일로 변경합니다. 이 변경 후에 실행되는 모든 명령의 출력은 터미널이 아닌 output.txt
파일로 리디렉션됩니다.
고급 리디렉션 예시
또한, exec
를 사용하여 표준 오류를 다른 파일로 리디렉션 하고 표준 출력을 그대로 유지할 수도 있습니다. 예를 들어:
#!/bin/bash
# 표준 오류를 stderr.txt로 리디렉션
exec 2> stderr.txt
# 표준 출력은 터미널로, 오류 메시지는 stderr.txt로 리디렉션됩니다
echo "이 메시지는 터미널에 출력됩니다."
echo "이 오류는 로그 파일에 기록됩니다." >&2
이 예시에서는 exec 2> stderr.txt
명령을 사용하여 쉘의 표준 오류 출력을 stderr.txt
로 리디렉션 합니다. echo "이 오류는 로그 파일에 기록됩니다." >&2
명령은 명시적으로 오류 메시지를 표준 오류로 보내며, 이 메시지는 stderr.txt
에 기록됩니다.
정리
exec
명령은 쉘에서 매우 강력한 기능을 제공하며, 이를 통해 스크립트의 출력 관리와 리소스 할당을 세밀하게 제어할 수 있습니다. 출력 리디렉션을 이용하면 스크립트의 실행 결과를 파일로 쉽게 저장하고, 이를 통해 로깅, 오류 추적 및 시스템 모니터링을 효과적으로 수행할 수 있습니다.
'Linuxpia > 리눅스 사용 팁' 카테고리의 다른 글
[리눅스 팁] 각 달 첫날의 날짜를 만들고 이를 'date -d' 명령에 전달해 달 이름을 출력 (42) | 2024.05.17 |
---|---|
[리눅스 팁] 명령어의 다양한 활용 (45) | 2024.05.16 |
[리눅스 팁] 프로세스 교체하기 (38) | 2024.05.14 |
[리눅스 팁] 다양한 하위 셸 확인 (36) | 2024.05.13 |
[리눅스 팁] 하위 셸(subshell)을 명시적으로 사용하는 기법 (41) | 2024.05.12 |