안녕하세요! 리눅스 터미널에서 ls를 치면 화면에 파일 목록이 나오고, cat을 치면 파일 내용이 화면에 출력됩니다. 우리는 이것을 너무나 당연하게 생각하죠. 하지만 만약 “화면에 나오는 저 내용을 그대로 텍스트 파일로 저장하고 싶다면?” 혹은 “A 명령어의 출력 결과를 B 명령어의 입력으로 바로 넘겨주고 싶다면?” 어떻게 해야 할까요? 마우스로 일일이 복사해서 메모장에 붙여넣을 필요가 없습니다. 리눅스에는 데이터의 흐름을 자유자재로 바꾸는 강력한 통로인 리디렉션(Redirection)과 파이프(Pipe)가 있기 때문입니다. 오늘 이 두 가지 개념을 완벽하게 마스터해 보겠습니다.


1. 데이터의 방향을 틀어라: 리디렉션(Redirection)

리눅스에서 모든 명령어는 기본적으로 키보드로 입력(Standard Input)받고, 화면으로 출력(Standard Output)하도록 설정되어 있습니다. 이 출력의 방향을 다른 곳(예: 파일)으로 돌리는 기호가 바로 꺾쇠(>, >>)입니다.

① 덮어쓰기 기호: >

명령어의 실행 결과를 화면이 아닌 특정 파일에 새로 저장합니다. 만약 기존에 동일한 파일이 있다면 내용을 완전히 지우고 덮어씁니다.

$ ls -l > file_list.txt
  • 결과: 화면에는 아무것도 나오지 않습니다. 대신 현재 폴더의 파일 상세 목록이 file_list.txt라는 파일로 생성되어 그 안에 저장됩니다.

    ② 이어쓰기(추가) 기호: »

    기존 파일의 내용을 유지한 채, 맨 아래줄에 새로운 내용을 추가(Append)하고 싶을 때 사용합니다.

    $ echo "새로운 로그 기록 추가" >> log.txt
    
  • 결과: log.txt 파일이 없다면 새로 만들고, 이미 내용이 있다면 기존 데이터 다음 줄에 텍스트를 안전하게 덧붙입니다.

    2. 명령어와 명령어를 연결하는 고속도로: 파이프 (|)

    파이프(|, 엔터키 위의 원화₩ 기호와 함께 있는 바 기호)는 앞 명령어의 출력 결과를 뒤 명령어의 입력으로 다이렉트 연결해 주는 리눅스의 가장 위대한 유산 중 하나입니다. 앞서 배웠던 cat, head, tail, less 같은 명령어들이 이 파이프와 만나면 엄청난 시너지를 냅니다.

    💡 실무 활용 예시 (연쇄 명령)

  • 끝없이 긴 파일 내용을 한 페이지씩 끊어서 보기
    $ cat system.log | less
       
    

    cat이 뱉어낸 방대한 텍스트를 화면에 폭주시키지 않고, less 프로그램의 입력으로 연결하여 Page Up/Down 키로 천천히 읽을 수 있게 만듭니다.

  • 수천 줄의 로그 파일 중 딱 상위 5줄만 가로채기
    $ cat eggzy.py | head -n 5
       
    

    파일 전체를 읽어온 뒤, 파이프를 통해 head에 넘겨주어 정확히 맨 위 5줄만 화면에 출력합니다.

  • 실시간 로그 중에서 특정 단어가 포함된 줄만 필터링하기
    $ tail -f /var/log/syslog | grep "ERROR"
       
    

    tail -f로 실시간 추가되는 시스템 로그를 감시하면서, 파이프를 통해 grep 명령어로 넘겨 “ERROR”라는 단어가 포함된 치명적인 줄만 화면에 골라 띄웁니다.

    📌 요약 및 치트키 가이드

기호 기능 한 줄 요약  
> 출력 리디렉션 (덮어쓰기) 결과를 파일로 저장 (기존 내용 삭제)  
» 출력 리디렉션 (이어쓰기) 결과를 파일 끝에 추가 (기존 내용 보존)  
** ** 파이프라인 (연결) 앞 명령어의 출력을 뒤 명령어의 입력으로 전환

리디렉션과 파이프는 리눅스 철학인 “각 프로그램은 하나의 일만 잘해야 하며, 이들을 서로 연결해 더 큰 일을 수행한다”를 가장 잘 보여주는 기능입니다. 이 기호들을 자유자재로 조합하기 시작하면 터미널 환경이 완전히 다르게 보이실 겁니다. 오늘 준비한 마법 같은 명령어 조합 팁은 여기까지입니다. 궁금한 점이 있다면 댓글로 남겨주세요. 😊

댓글 남기기