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"
이 명령어는 세 가지 작업을 수행합니다.
/etc디렉토리의 내용을 나열합니다.- 해당 출력을
tee로 파이프하여etc_listing.txt에 복사본을 저장하고 동시에 전달합니다. tee에서 나온 출력은grep으로 파이프되어 "conf"를 포함하는 줄을 필터링합니다.
이 명령어들을 마스터하면 명령줄 효율성이 크게 향상될 것입니다.