리눅스 쉘 - 리다이렉션과 파이프

김하영·2023년 4월 10일
0

리다이렉션과 파이프의 목적

리눅스 쉘에서 리다이렉션과 파이프는 프로세스의 stream을 바꿔주기 위해 사용된다!

표준 입출력 (standard stream)

command로 실행되는 프로세스는 표준 입력 스트림(stdin), 표준 출력 스트림(stdout), 오류 출력 스트림(stderr) 이렇게 세가지 스트림을 가진다.

대부분 출력 스트림(stdout, stderr)은 plain text로 콘솔에 출력된다.

리다이렉션 (redirection)

리다이렉션은 표준 스트림 흐름을 바꿀 때 샤용할 수 있다. 리다이렉션은 주로 표준 출력을 콘솔이 아닌 파일에 쓸때 많이 사용한다.

  • >: 표준 출력 스트림을 바꿈 ( 파일의 기존 내용은 사라지고 결과가 출력됨)
  • <: 표준 입력 스트림을 바꿈 (파일의 기존 내용을 사라지고 입력 됨)
  • >>, << : 기존 파일에 추가할때 사용

리다이렉션 예시

  • ls > tmp.txt : ls의 결과는 원래 표준 스트림에 따라 콘솔에 출력된다. 하지만 ‘>’를 사용해 표준 출력 스트림을 바꿔주므로써 ls의 결과는 tmp.txt파일에 적히게 된다.
  • head < tmp.txt : head는 어떤 파일의 앞 10줄을 출력해주는데 head 명령어의 입력 스트림을 tmp.txt로 바꿔주므로써 tmp.txt의 앞 10줄이 콘솔에 출력된다.
  • ls >> tmp.txt : tmp.txt의 맨뒤에 ls의 결과가 추가된다.

파이프 (pipe)

파이프는 두 프로세스 사이에서 한프로세스의 출력 스트림이 다른 프로세스의 입력 스트림으로 사용되도록 할때 사용한다.

파이프 예시

  • ls | grep ab : ls는 현재 폴더의 파일명들을 출력하는 명령어이다. 그리고 grep은 뒤에 나오는 문자열을 포함하는 파일이름을 출력하는 명령어다. ls와 grep은 파이프로 연결되어 있다. 따라서 ls의 결과가 grep의 입력으로 들어가서 ls한 결과에서 ab를 파일 이름으로 가지고 있는 파일들을 출력하게 된다.

주로 해당 폴더에 어떤 파일이 존재하는지 확인하고자 할때 사용하는 명령어이다!

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글