Standard Stream (표준 입출력)
리눅스 환경에서 커맨드로 실행되는 프로세스는 세 가지의 표준 스트림을 가지고 있습니다.
위와 같은 모든 스트림은 일반적인 plain text로 console(터미널)에 출력하도록 되어 있습니다.
앞에서 말했듯 터미널에 출력하는 일반적인 표준 스트림 흐름을 바꿔줄 수 있는 방법입니다.
>
,<
을 사용하여 명령어 표준 출력(저장)을 화면이 아닌 파일에 할 수 있습니다.
ls
명령은 파일의 리스트를 화면(터미널)에 출력합니다.
ls > flies.txt
명령을 사용하면 ls로 출력되는 표준 출력 스트림의 방향을 files.txt로 바꿔줍니다. files.text에 ls의 출력 결과를 저장한다는 의미이며 파일이 없더라도 새로 생성해서 저장해줍니다.
head
명령은 파일의 앞 10줄만 출력해서 화면(터미널)에 출력합니다.
head < files.tet
명령을 사용하면 files.txt의 내용이 head 명령을 통해서 앞 10줄만 출력해줍니다.
혹은head < files.txt > files2.txt
처럼 사용할 수 있습니다.
혹은 ls >> files.txt
명령으로 files.txt 파일의 기존 내용을 수정하지 않고 >>
를 사용해서 내용을 추가할 수 있습니다.
두 프로세스 사이에서 한 프로세스의 출력 스트림을 다른 프로세스의 입력 스트림으로 사용할 때 사용합니다.
|
를 사용하여 사용할 수 있습니다.
ls | grep files.txt
명령을 사용하면 ls를 통해서 출력된 결과를grep
명령의 입력 스트림으로 들어가ls
출력 결과 중에files.txt
라는 파일이 있는지 찾아줍니다.
grep [-option] [pattern] [file or directory name]
: 입력으로 들어오는 데이터 중 특정한 키워드와 관련된 데이터를 찾습니다.
grep -i
: 대소문자를 구별하지 않습니다.(영문)grep -v
: pattern을 포함하지 않는 라인을 출력합니다.grep -n
: 검색 결과의 각 행의 선두에 행 번호를 넣습니다.grep -l
: 파일의 이름만 검색합니다.grep -c
: pattern과 일치하는 라인의 개수만 출력합니다.grep -r
: 하위 디렉토리까지 검색합니다.