소개
Linux I/O 리다이렉션은 명령의 출력이 어디로 가고 명령의 입력이 어디에서 오는지 제어할 수 있는 강력한 기능입니다. I/O 리다이렉션을 마스터하면 명령 출력을 파일에 저장하고, 여러 명령을 결합하며, 오류를 효율적으로 처리할 수 있습니다.
이 Lab 에서는 Linux 에서 다양한 리다이렉션 연산자를 사용하는 방법을 배우게 됩니다. 표준 출력을 파일로 리다이렉션하고, 기존 파일에 출력을 추가하며, 리다이렉션을 통해 오류 메시지를 관리하는 연습을 할 것입니다. 이러한 기술은 모든 Linux 사용자에게 필수적이며, 명령줄 작업을 더욱 효율적이고 체계적으로 만들 것입니다.
기본 출력 리다이렉션
Linux 에서 명령은 일반적으로 화면에 출력을 표시합니다. 하지만 I/O 리다이렉션을 사용하면 이 출력을 대신 파일로 보낼 수 있습니다. 가장 기본적인 리다이렉션 연산자는 >이며, 출력을 파일로 보냅니다.
실습을 위해 디렉토리 구조를 먼저 만들어 보겠습니다.
cd ~/project
mkdir -p io_practice
cd io_practice
이제 리다이렉션이 어떻게 작동하는지 살펴보겠습니다. echo 명령을 사용하면 화면에 텍스트가 표시됩니다.
echo "Hello, Linux World!"
다음과 같은 출력을 볼 수 있습니다.
Hello, Linux World!
이 출력을 화면에 표시하는 대신 파일로 리다이렉션하려면 > 연산자를 사용합니다.
echo "Hello, Linux World!" > greeting.txt
이 명령은 텍스트가 파일로 리다이렉션되었기 때문에 가시적인 출력을 생성하지 않습니다. 파일이 생성되었고 텍스트가 포함되어 있는지 확인해 보겠습니다.
ls -l greeting.txt
cat greeting.txt
다음과 유사한 출력을 볼 수 있습니다.
-rw-r--r-- 1 labex labex 19 Oct 25 10:00 greeting.txt
Hello, Linux World!
> 연산자는 파일이 존재하지 않으면 새 파일을 만들고, 이미 존재하면 파일을 완전히 덮어씁니다. 이 점을 시연하기 위해 파일을 덮어쓰겠습니다.
echo "New content replaces old content completely." > greeting.txt
cat greeting.txt
출력:
New content replaces old content completely.
보시다시피, 원래 내용은 사라지고 새 내용으로 대체되었습니다.
파일에 출력 추가
때로는 이미 있는 내용을 덮어쓰지 않고 파일에 내용을 추가하고 싶을 때가 있습니다. 이러한 목적으로 Linux 는 >> 연산자를 제공하며, 이 연산자는 출력을 파일의 끝에 추가합니다.
기존 greeting.txt 파일에 텍스트를 추가해 보겠습니다.
echo "This line will be added to the end of the file." >> greeting.txt
cat greeting.txt
출력:
New content replaces old content completely.
This line will be added to the end of the file.
보시다시피, 새 내용은 기존 내용을 유지하면서 파일의 끝에 추가됩니다.
log.txt라는 새 파일을 만들고 여러 항목을 추가하여 로그 파일을 시뮬레이션해 보겠습니다.
echo "Log entry 1: System started" > log.txt
echo "Log entry 2: User logged in" >> log.txt
echo "Log entry 3: Application launched" >> log.txt
이제 로그 파일의 내용을 확인해 보겠습니다.
cat log.txt
출력:
Log entry 1: System started
Log entry 2: User logged in
Log entry 3: Application launched
echo뿐만 아니라 다른 명령과 함께 리다이렉션을 사용할 수도 있습니다. 예를 들어, ls 명령을 사용하여 파일을 나열하고 출력을 파일에 저장해 보겠습니다.
ls -l > file_list.txt
cat file_list.txt
출력은 현재 디렉토리의 파일에 대한 자세한 목록을 보여주며, 이는 file_list.txt에 저장되었습니다.
기억하세요:
>는 새 파일을 만들거나 기존 파일을 덮어씁니다.>>는 기존 파일의 끝에 추가하거나, 파일이 없으면 새 파일을 만듭니다.
오류 출력 리다이렉션
Linux 에서 명령은 두 가지 유형의 출력을 생성합니다.
- 표준 출력 (stdout) - 명령의 일반적인 출력
- 표준 오류 (stderr) - 명령에서 생성된 오류 메시지
지금까지 표준 출력을 리다이렉션해 왔습니다. 이제 표준 오류를 리다이렉션하는 방법을 알아보겠습니다.
표준 오류는 파일 디스크립터 2 를 사용하므로, 이를 리다이렉션하려면 2>를 사용합니다. 존재하지 않는 파일을 나열하여 오류를 생성해 보겠습니다.
ls non_existent_file.txt
다음과 같은 오류 메시지가 표시됩니다.
ls: cannot access 'non_existent_file.txt': No such file or directory
이제 이 오류 메시지를 파일로 리다이렉션해 보겠습니다.
ls non_existent_file.txt 2> error.log
이번에는 화면에 오류 메시지가 표시되지 않습니다. 왜냐하면 error.log 파일로 리다이렉션되었기 때문입니다. 이 파일의 내용을 확인해 보겠습니다.
cat error.log
출력:
ls: cannot access 'non_existent_file.txt': No such file or directory
표준 출력과 표준 오류를 서로 다른 파일로 리다이렉션할 수도 있습니다.
## Create a file we can successfully list
echo "This is a test file" > existing_file.txt
## Redirect stdout to one file and stderr to another
ls existing_file.txt non_existent_file.txt > output.log 2> error2.log
## Check both files
echo "Content of output.log:"
cat output.log
echo "Content of error2.log:"
cat error2.log
출력:
Content of output.log:
existing_file.txt
Content of error2.log:
ls: cannot access 'non_existent_file.txt': No such file or directory
&>를 사용하여 표준 출력과 표준 오류를 모두 동일한 파일로 리다이렉션할 수도 있습니다.
ls existing_file.txt non_existent_file.txt &> combined.log
cat combined.log
이렇게 하면 일반 출력과 모든 오류 메시지가 combined.log 파일에 캡처됩니다.
요약
이 랩에서는 Linux 에서 I/O 리다이렉션의 기본적인 개념을 배웠습니다. 다음을 실습했습니다.
>연산자를 사용하여 파일을 생성하거나 덮어쓰는 기본적인 출력 리다이렉션>>연산자를 사용하여 기존 파일에 출력 추가하기2>연산자를 사용하여 표준 오류 리다이렉션- 표준 출력과 표준 오류를 서로 다른 파일 또는 동일한 파일로 리다이렉션
이러한 리다이렉션 기술은 Linux 명령줄 작업에 필수적인 도구입니다. 이를 통해 다음을 수행할 수 있습니다.
- 나중에 참조할 수 있도록 명령 출력을 저장
- 디버깅을 위한 로그 파일 생성
- 필요에 따라 오류 메시지 억제
- 여러 출력을 단일 파일로 결합
I/O 리다이렉션을 마스터함으로써 명령줄을 보다 효율적이고 효과적으로 작업하는 데 도움이 되는 귀중한 기술을 Linux 툴킷에 추가했습니다.



