Linux Redirection
- 표준 스트림의 흐름을 바꾸는 것
- 특수기호
>과<을 사용
1. Stream
- 일반적인 커맨드의 프로세스는 입력 스트림, 표준 출력 스트림, 오류 출력 스트림을 갖는다.
- 모든 스트림은 일반적인 문자열로 콘솔에 출력한다.
2. Redirection
- 프로세스의 스트림을 콘솔이 아닌 파일로 사용하는 등의 흐름을 바꾸는데 사용
파일 목록을 텍스트 파일로 저장
ls > ls.txt
- ls는 디렉토리와 파일의 목록을 출력하는 것으로 콘솔에 출력된다.
- 이것을
ls.txt라는 파일로 흐름을 바꾸어 출력하게 되고, 이는 ls.txt에 파일의 목록을 기록한다.
파일에 쓰여진 것을 콘솔로 출력
head < ls.txt
head: 파일의 처음 부분을 설정한 라인만큼 출력- 파일 출력을 콘솔 출력으로 흐름을 바꾸게 되고 콘솔에
ls.txt의 내용이 출력된다.
심화
head < ls.txt > ls2.txt
- 왼쪽부터 실행된다.
- ls.txt의 내용을 head로 보내 내용을 출력하고 이를 ls2.txt에 기록한다.
Linux Pipe
- 프로세스간 사용하는 기능
|표시로 사용-
A B: A의 커맨드 표준 출력을 B의 커맨드 표준 입력으로 사용 - A의 결과를 걸러서 B에서 사용
1. 사용 예시
ls | grep ls.txt
- ls 명령어의 출력 스트림을
grep커맨드의 입력 스트립으로 보내고,grep의 인자로ls.txt를 넘기는 상황 - 현재 디렉토리에
ls.txt가 있다면 콘솔에 출력
2. grep
- 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용
- 정규표현식, 패턴 매칭 방식을 사용
- 기본적으로 대소문자 구분
grep [option] [pattern] [file]
grep을 파이프로 입력 스트림을 주는 경우에는 필터처럼 동작- 파일이나 디렉토리 명을 쓰지 않아도 패턴과 옵션으로 해당 패턴 탐색
혼합해서 사용
ls | grep ls.txt > ls2.txt
- 현재 디렉토리의 파일, 디렉토리 리스트를
grep으로 전송 - 해당 리스트에서
ls.txt가 있는지 검색 - 검색 결과를 ls2.txt에 기록