표준스트림
keypoint
입력스트림과 출력스트림에는 버퍼가 있는 반면 오류 출력 스트림에는 버퍼가 없다.
이는 프로그램 충돌 시 오류메세지를 디스플레이로 즉각 전달하기 위해서다.
오류메시지가 버퍼를 거친다면 프로그램 비정상 종료시 할당되었던 버퍼가 해제되고 오류메시지가 모니터에 도달하지 못할 수도 있다.
리다이렉션
리다이렉션이란, 실행되는 프로그램의 표준 스트림을 사용자 임의로 변경할 수 있는 기능이다.
예를 들어, 출력 리다이렉션을 한다면 위 그림에서 출력 스트림이 모니터가 아니라 다른 프로그램을 향하게 할 수 있다.
출력 리다이렉션
date > today.txt
위 명령어는 date 명령어의 출력을 모니터가 아니라 today.txt 파일을 향한다.
* 주의 : today.txt가 이미 존재한다면 덮어씌워진다.
date >> today.txt
위 명령어도 마찬가지로 date 명령어의 출력이 today.txt 파일을 향한다.
단, today.txt가 이미 존재하더라도 거기에 추가로 append된다.
cat > text.txt
Hello, I am bithub.
cat >> text.txt
This is my second cat.
cat text.txt
Hello, I am bithub.
This is my second cat.
* cat 명령어를 끝내고 싶으면 ctrl + d를 입력하면 되는데 ctrl + d는 EOF를 의미한다.
오류 출력 리다이렉션
오류 출력 리다이렉션은 주로 오류메시지를 로깅할 때 사용된다.
'2>' 를 사용하면 된다.
asdfsadfas23 2> error.log
cat error.log
asdfsadfas23: command not found
마찬가지로 2>>를 사용하면 기존 파일에 오류 메시지를 append한다.
출력리다이렉션과 오류출력리다이렉션을 동시에 진행하려면 &>를 사용하면 된다.
cat text.txt &> text_copy.txt
입력 리다이렉션
입력 리다이렉션은 주로 명령어의 입력을 대량으로 한번에 넣고 싶을 때 사용된다.
이러한 테크닉을 here document(heredoc)이라고 한다.
방법은 간단하다.
command << 종료식별자
입력1
입력2
...
종료식별자
예제를 보자.
cat << BITHUB
james
tom
steven
sam
thomas
BITHUB
<출력>
james
tom
steven
sam
thomas
여기서 종료식별자는 BITHUB다.
두번째 예제를 보자.
cat < names.txt > names_copy.txt
cat 명령어의 입력 스트림으로 names.txt가 들어가고 출력 스트림에 names_copy.txt를 연결해주었다.
names.txt의 복사본으로 names_copy.txt가 생성된다.
'Linux' 카테고리의 다른 글
Linux 스크립트 함수 작성 (0) | 2024.03.15 |
---|---|
Linux 파이프 (0) | 2024.03.15 |
Linux 와일드카드 (0) | 2024.03.14 |
Linux 파일시스템(윈도우와 차이점) (1) | 2024.03.14 |
Linux 자주 사용되는 명령어 (0) | 2024.03.14 |