Linux I/O 리다이렉션

LinuxBeginner
지금 연습하기

소개

Linux I/O 리다이렉션은 명령의 출력이 어디로 가고 명령의 입력이 어디에서 오는지 제어할 수 있는 강력한 기능입니다. I/O 리다이렉션을 마스터하면 명령 출력을 파일에 저장하고, 여러 명령을 결합하며, 오류를 효율적으로 처리할 수 있습니다.

이 Lab 에서는 Linux 에서 다양한 리다이렉션 연산자를 사용하는 방법을 배우게 됩니다. 표준 출력을 파일로 리다이렉션하고, 기존 파일에 출력을 추가하며, 리다이렉션을 통해 오류 메시지를 관리하는 연습을 할 것입니다. 이러한 기술은 모든 Linux 사용자에게 필수적이며, 명령줄 작업을 더욱 효율적이고 체계적으로 만들 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 91%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

기본 출력 리다이렉션

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 에서 명령은 두 가지 유형의 출력을 생성합니다.

  1. 표준 출력 (stdout) - 명령의 일반적인 출력
  2. 표준 오류 (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 리다이렉션의 기본적인 개념을 배웠습니다. 다음을 실습했습니다.

  1. > 연산자를 사용하여 파일을 생성하거나 덮어쓰는 기본적인 출력 리다이렉션
  2. >> 연산자를 사용하여 기존 파일에 출력 추가하기
  3. 2> 연산자를 사용하여 표준 오류 리다이렉션
  4. 표준 출력과 표준 오류를 서로 다른 파일 또는 동일한 파일로 리다이렉션

이러한 리다이렉션 기술은 Linux 명령줄 작업에 필수적인 도구입니다. 이를 통해 다음을 수행할 수 있습니다.

  • 나중에 참조할 수 있도록 명령 출력을 저장
  • 디버깅을 위한 로그 파일 생성
  • 필요에 따라 오류 메시지 억제
  • 여러 출력을 단일 파일로 결합

I/O 리다이렉션을 마스터함으로써 명령줄을 보다 효율적이고 효과적으로 작업하는 데 도움이 되는 귀중한 기술을 Linux 툴킷에 추가했습니다.