참고
스트림 & 파이프라인
NOTE
스트림(Stream)이란, 프로그램을 드나드는 데이터를 흐름으로 표현한 단위!
파일로 모든걸 처리하겠다
ls -al /dev/fd/ # 4개의 파일(0~3 확인가능)
Bash
복사
유닉스에서는 장치를 추상화하여, 장치를 파일처럼 다루어 입출력 문제를 해결했습니다. 각각의 다양한 하드웨어 장치에 대해 별도의 설치 작업을 하지 않고, 파일을 읽고 쓰는 하나의 작업으로 통일했습니다!
리눅스에서는 /dev 디렉토리에 3개의 표준 스트림을 파일 형태로 저장하고 있습니다.
•
STDIN (Standard Input, 0): 입력을 위한 스트림
•
STDOUT (Standart Output, 1): 출력을 위한 스트림
•
STDERR (Standard Error, 2): 오류 메세지를 출력하기 위한 스트림
리다이렉션 (>, >>, <)
NOTE
리다이렉션은 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 해준다!
리다이렉션 기호 | 방향 | 의미 |
> | 표준 출력 | 명령의 결과를 파일로 저장 (기존 파일 덮어씀) |
>> | 표준 출력(append) | 명령의 결과를 기존 파일에 추가 |
< | 표준 입력 | 파일의 데이터를 명령에 입력 |
1>을 짧게 >로 사용, 2>도 가능함
date > today.txt # > 명령의 결과를 파일로 저장(기존파일 덮어씀)
ncal -3 > cal.txt # ncal -3의 출력을 cal.txt에 넣는다.
head -n3 < cal.txt # head 명령의 입력을 cal.txt파일에서 가져온다.
ls -al >> directorylist.txt # >> 명령의 결과를 기존파일에 추가
cat .profile > directorylist.txt
ls -al >> directortylist.txt
wc -l < numbers.txt
wc -l < numbers.txt > count.txt # wc -l에 numbers 전달하고 결과값을 count.txt 저장
sort < numbers.txt | uniq
cat notexists.txt 2> errorfile # 에러사항 저장
cat notexists.txt 2> /dev/null # 에러사항 무시
# 1은 정상, 2는 오류
sort file.txt > sortedfile.txt
date > file.txt # 내용으 덮어씀
date >> file.txt # 다음 라인에 추가함
# /dev/null은 블랙홀 (사라짐)
grep -r '^The' /etc/ # 에러 메시지도 같이출력
grep -r '^The' /etc/ 2> /dev/null # 에러메시지 제거
grep -r '^The' /etc/ 1>> output.txt 2>> errors.txt
# &1은 1번 출력으로 리다이렉션시
grep -r '^The' /etc/ > all_output.txt 2>&1
grep -r '^The' /etc/ 1> all_output.txt 2>&1
grep -r '^The' /etc/ 2> &1 1> all_output.txt
Bash
복사
파이프 ( | )
NOTE
어떤 명령의 결과를 다시 어떤 명령의 입력으로 받아야 할 때 사용한다
# 날짜를 출력하고 뒤집음
# 3202 CTU 55:65:10 9 yaM euT
date | rev
cat numbers.txt | uniq | sort | wc -l # sort(정렬), uniq(연속 중복된 라인제거)
# 이외에 알면 좋은 명령어들
awk '{pring $1}' filename # 각 라인의 1번째 필드
sed 's/old/new' filename # 파일 내 old -> new 변경
cut -d':' -fl filename # :로 구분된 필드 중 1번째만
Bash
복사
| 기호를 사용해서 명령어 2개를 연속으로 사용함!