리눅스 리다이렉션(redirection)과 파이프(pipe)과 관련해서 알아보겠습니다.
Standard Stream (표준 입출력)
command로 실행되는 프로세스는 세 가지 스트림을 가지고 있습니다.
1. 표준 입력 스트림 (Standard Input Stream) - stdin
2. 표준 입력 스트림 (Satandard Output Stream) - stdout
3. 오류 출력 스트림 (Standard Error Stream) - stderr
모든 스트림은 일반적인 plain text로 console에 출력하도록 되어있습니다.
Redirection (리다이렉션)
표준 스트림 흐름을 바꿔줄 수 있습니다. 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용합니다.
ex)
ls > files.txt
ls로 출력되는 표준 출력 스트림의 방향을 files.txt로 바꿔줍니다. (files.txt에 ls로 출력되는 결과가 저장됩니다.)
head < files.txt
files.txt의 파일 내용이 head라는 파일의 처음부터 10라인까지 출력해주는 명령으로 넣어집니다. (files.txt의 앞 10 라인이 출력됩니다.)
head < files.txt > files2.txt
files.txt의 파일 내용이 head로 들어가서, files.txt의 앞 10 라인을 출력합니다. head의 출력 스트림은 다시 files2.txt로 들어갑니다. head는 files.txt 내용을 출력하지 않고, 해당 출력 내용이 다시 files2.txt에 저장됩니다. 결과적으로 files.txt의 앞 10라인이 files.txt에 저장됩니다.
ls >> files.txt
기존에 있는 files.txt 파일 끝에, ls 출력 결과를 추가해줍니다. '>'의 경우 파일이 덮어씌어지지만 '>>'는 추가가 됩니다.
Pipe (파이프)
두 프로세스 사이에서 한 프로세스의 출력 스트림을 또 다른 프로세스 입력 스트림으로 사용할 때 사용됩니다.
ex)
ls | grep files.txt
ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어갑니다. grep files.txt는 grep 명령의 입력 스트림을 검색해서 files.txt가 들어있는 입력 내용만 출력해줍니다. 따라서 ls 명령으로 해당 디렉토리 혹은 파일 중에 files.txt 파일이 있는지 출력해줍니다.
grep은 검색을 하기 위한 명령어입니다.
'시스템 프로그래밍' 카테고리의 다른 글
리눅스 파일 시스템 (0) | 2021.04.30 |
---|---|
쉘 사용법 - 리눅스 프로세스 (0) | 2021.04.30 |
쉘 (shell) 명령어 (0) | 2021.04.29 |
유닉스/리눅스 기본 구성 (0) | 2021.04.28 |
리눅스의 배경 (0) | 2021.04.27 |