Bash 프로세스 입력과 출력 변경

Linux의 Bash 쉘은 사용자와 상호작용하면서 입력을 받고 결과를 출력하는 프로세스입니다. 이러한 입력과 출력을 변경하고 제어하는 것은 리눅스 시스템 관리자나 개발자에게 중요한 작업입니다. 이 글에서는 Bash 프로세스의 입력과 출력을 변경하는 방법에 대해 살펴보겠습니다.

1. Standard Input (stdin) 변경

Bash 쉘에서 표준 입력은 stdin으로 알려져 있습니다. 기본적으로 stdin은 터미널로부터 입력을 받습니다. 하지만 입력을 파일로 리디렉션하거나 파이프를 사용하여 다른 프로세스의 출력을 stdin으로 전송할 수도 있습니다.

파일 리디렉션을 사용한 stdin 변경

다음은 파일 리디렉션을 사용하여 stdin을 변경하는 예입니다.

$ ./my_script.sh < input.txt

위의 예시에서 my_script.shinput.txt 파일로부터 입력을 받습니다. 따라서 my_script.shstdin으로부터 파일의 내용을 읽습니다.

파이프를 사용한 stdin 변경

파이프(|)를 사용하여 다른 프로세스의 출력을 stdin으로 전달할 수 있습니다. 아래 예시를 참고하세요.

$ cat input.txt | ./my_script.sh

위의 예시에서 cat 명령어는 input.txt 파일의 내용을 읽고 my_script.sh로 전달합니다. 따라서 my_script.shstdin으로부터 cat 명령어의 출력을 받습니다.

2. Standard Output (stdout) 변경

Bash 쉘에서 표준 출력은 stdout로 알려져 있습니다. 기본적으로 stdout은 터미널에 결과를 출력합니다. 그러나 stdout을 파일로 리디렉션하거나 다른 프로세스의 입력으로 보낼 수도 있습니다.

파일 리디렉션을 사용한 stdout 변경

다음은 파일 리디렉션을 사용하여 stdout을 변경하는 예입니다.

$ ./my_script.sh > output.txt

위의 예시에서 my_script.sh는 표준 출력을 output.txt 파일로 리디렉션합니다. 따라서 my_script.sh의 결과는 output.txt 파일에 저장됩니다.

다른 프로세스의 입력으로 stdout 보내기

파이프(|)를 사용하여 다른 프로세스의 입력으로 stdout을 전달할 수 있습니다. 아래 예시를 참고하세요.

$ ./my_script.sh | grep "keyword"

위의 예시에서 my_script.sh의 출력은 grep 명령어의 입력으로 전달됩니다. 따라서 grep 명령어는 my_script.sh의 결과 중에서 “keyword”를 필터링합니다.

3. Standard Error (stderr) 변경

Bash 쉘에서 표준 오류는 stderr로 알려져 있습니다. 기본적으로 stderr은 터미널에 오류 메시지를 출력합니다. 그러나 stderr을 파일로 리디렉션하거나 stdout으로 리디렉션할 수도 있습니다.

파일 리디렉션을 사용한 stderr 변경

다음은 파일 리디렉션을 사용하여 stderr을 변경하는 예입니다.

$ ./my_script.sh 2> error.log

위의 예시에서 my_script.sh는 오류 메시지를 error.log 파일로 리디렉션합니다. 따라서 my_script.sh의 오류 메시지는 error.log 파일에 저장됩니다.

stdout으로 stderr 보내기

2>&1을 사용하여 stdout으로 stderr을 보낼 수 있습니다. 아래 예시를 참고하세요.

$ ./my_script.sh > output.txt 2>&1

위의 예시에서 my_script.sh의 표준 출력과 표준 에러 모두 output.txt 파일로 리디렉션됩니다.

마무리

Bash 쉘을 사용하는 동안 프로세스의 입력과 출력을 변경하는 것은 매우 유용합니다. 파일 리디렉션과 파이프를 적절하게 활용하여 작업을 더욱 효과적으로 수행할 수 있습니다. 이 문서에서 소개된 기술을 활용하여 리눅스 시스템 관리 또는 쉘 스크립트 개발 작업을 보다 효율적으로 수행해 보세요.