본문 바로가기
Docker/도커를 위한 리눅스 기초

[Docker를 위한 Linux 기초] 2. Redirection과 Pipe

by Fletcher 2024. 8. 13.

 

반갑습니다!

이번 포스트에서는 Docker를 위한 Linux 기초

두 번째 내용 리다이렉션과 파이프에 대해서 알아보겠습니다 ^^

 

 

먼저 기본 배경지식이 필요한데요

 

command로 실행되는 프로세스는 세 가지의 스트림을 가지고 있습니다

①표준 입력 스트림(Standard Input Stream) - STDIN

②표준 출력 스트림(Standard Output Stream) - STDOUT

③오류 출력 스트림(Standard Error Stream) - STDERR

 

모든 스트림은 일반적인 Plain Text로 Console에 출력하도록 되어있습니다 ^^

 

 

리다이렉션(redirection)이란건 이 표준 스트림의 흐름을 바꿔주는 기능을 합니다!

> 또는 <을 이욯나느데요

주로 명령어 표준 출력을 화면에 나타내는 것이 아니라

특정 파일에 쓸 때 사용합니다 ^^

 

또는 특정 파일의 내용을 응용 프로그램에 stdin으로 넣어줄 때도 사용합니다!

 

 

샘플 코드를 통해서 살펴보겠습니다!

 

$ ls -a 명령어를 통해 현재 디렉토리 경로의

하위 파일 및 폴더 중 숨겨져 있는 것들까지 모두 조회했습니다 ^^

위와 같이 화면에 출력되는 것을 볼 수 있습니다

 

 

 

그럼 > 기호를 이용하여 리다이렉션 해보겠습니다

test.txt라는 파일에 ls 명령의 결과를 입력해보겠는데요 ^^

 

$ cat 명령어를 이용해서 test.txt의 내용을 조회해보니

본디 화면에 출력되어야 했을 ls의 결과가

해당 텍스트 파일에 기재되어 있는 것을 확인할 수 있겠습니다 ^^

 

 

 

반대로, test.txt 파일에 기재되어 있는 내용을

head 명령어에 입력하여 화면에 출력해보았습니다 ^^

 

 

 

> 기호는 해당 내용을 파일에 덮어쓰기만 하는데요

>> 기호를 이용하면 기존에 있던 내용에 이어서 추가할 수 있습니다 ^^

 

ls의 동일한 결과를 test.txt 파일에 추가한 뒤

$ cat 명령어를 이용해 조회해보니

동일한 내용이 뒤에 덧붙여진 것을 확인할 수 있겠습니다 ^^!

 

 

 

 

 

 

다음 내용은 파이프(Pipe)입니다

두 프로세스 사이에서 한 프로세스의 출력 스트림을

다른 프로세스의 입력 스트림으로 사용할 때 이용됩니다 ^^

 

 

마찬가지로 샘플 코드를 가지고 이해해보겠습니다 ^^!

 

 

위와 같이 | 파이프 기호를 이용해서 두 명령어를 붙여주시면 되는데요!

ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어갑니다 ^^

 

ls의 결과를 grep 명령의 입력으로 넣어주면,

grep 명령에서는 입력으로 들어온 데이터 중 test.txt가 포함되어 있는 내용만 결과로

화면에 출력해줍니다 ^^ !

 

 

참고로, grep 명령은 검색 기능을 하는 명령어입니다 ^^

옵션이 여러가지가 있는데요

① -i

영문의 대소문자를 구별하지 않습니다

 

② -v

pattern을 포함하지 않는 라인을 출력합니다

 

③ -n

검색 결과의 각 행의 선두에 행 번호를 넣습니다

 

④ -l

파일명만 출력합니다

 

⑤ -c

패턴과 일치하는 라인의 개수만 출력합니다

 

⑥ -r

하위 디렉토리까지 검색합니다

 

 

 

 

이상으로 리다이렉션과 파이프에 관련된 내용에 대해 알아보았습니다 ^^

다음 포스트에 이어서 나머지 내용들도 살펴보겠습니다!