4. 파이프 및 티

Linux 에서 명령어를 연결하기 시작하면 명령어 라인은 엄청나게 강력해집니다. 한 명령어를 실행하고, 그 출력을 저장한 다음, 다른 명령어를 실행하는 대신, 데이터를 그들 사이에 직접 전달하는 파이프라인을 만들 수 있습니다.

파이프 연산자 이해하기

많은 출력을 생성하는 명령어로 시작해 보겠습니다.

ls -la /etc

항목 목록이 화면에 다 들어오지 않아 읽기 어려울 수 있습니다. 이 출력을 파일로 리디렉션할 수도 있지만, 더 효율적인 방법은 less와 같은 다른 명령어로 직접 보내 쉽게 보는 것입니다.

ls -la /etc | less

수직선 (|) 으로 표시되는 파이프 연산자는 이 과정의 핵심입니다. 이 연산자는 왼쪽에 있는 명령어의 표준 출력 (stdout) 을 가져와 오른쪽에 있는 명령어의 표준 입력 (stdin) 으로 사용합니다. 이 경우, 우리는 ls -la /etc의 출력을 less 명령어로 파이프했습니다. 파이프는 여러분이 끊임없이 사용하게 될 기본적인 도구입니다.

Tee 명령어로 출력 분할하기

출력을 화면에 표시하는 동시에 파일에 저장하고 싶다면 어떨까요? 이때 tee 명령어가 사용됩니다. linux에서 pipe와 tee 명령어는 로깅 및 모니터링을 위한 고전적인 조합입니다.

ls | tee peanuts.txt

이 명령어를 실행한 후, 터미널에서 ls의 출력을 보게 될 것입니다. 또한 peanuts.txt 파일의 내용을 확인하면 정확히 동일한 정보를 찾을 수 있습니다. tee 명령어는 출력 스트림을 효과적으로 두 방향으로 분할합니다. 하나는 표준 출력으로, 다른 하나는 지정된 파일로 보냅니다.

파이프와 Tee 결합하기

이 명령어들을 연결하여 훨씬 더 고급 워크플로우를 만들 수 있습니다. 일반적인 패턴은 더 긴 명령어 체인의 중간에 tee로 파이프하는 것입니다. 이를 통해 중간 결과를 저장하면서 데이터 처리를 계속할 수 있습니다.

예를 들어, 추가 필터링 전에 출력을 보고 저장하기 위해 linux pipe tee 조합을 사용할 수 있습니다.

ls -la /etc | tee etc_listing.txt | grep "conf"

이 명령어는 세 가지 작업을 수행합니다.

  1. /etc 디렉토리의 내용을 나열합니다.
  2. 해당 출력을 tee로 파이프하여 etc_listing.txt에 복사본을 저장하고 동시에 전달합니다.
  3. tee에서 나온 출력은 grep으로 파이프되어 "conf"를 포함하는 줄을 필터링합니다.

이 명령어들을 마스터하면 명령줄 효율성이 크게 향상될 것입니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

연습이 완벽함을 만듭니다! 입력/출력 리디렉션 및 파이프라인에 대한 이해를 강화하기 위한 실습 랩이 있습니다.

  1. Linux 에서 입력 및 출력 리디렉션 - 연산자 (예: >, >>, 2>, 및 tee 명령어) 를 조작하여 명령어의 표준 출력 (stdout), 표준 오류 (stderr), 표준 입력 (stdin) 을 제어하여 데이터 흐름을 연습합니다.
  2. 시퀀스 제어 및 파이프라인 - 명령어 실행 시퀀스를 제어하고, 파이프라인을 활용하며, cut, grep, wc, sort, uniq와 같은 강력한 텍스트 처리 도구를 활용하는 방법을 배웁니다.
  3. 데이터 스트림 리디렉션 - 표준 입력, 출력 및 오류 스트림 조작, 출력 결합, /dev/null 활용을 포함하여 Linux 스트림 리디렉션 기술을 배웁니다.

이 랩들은 파이프 및 리디렉션 개념을 실제 시나리오에 적용하고 명령줄 데이터 조작에 대한 자신감을 키우는 데 도움이 될 것입니다.

퀴즈

Linux 명령어에서 파이프 연산자를 나타내는 단일 문자는 무엇입니까? 기호만으로 답하십시오.