Hello, Freakin world!

[Ubuntu] 입출력 리다이렉션 연산자 정리하기 본문

OS/Ubuntu

[Ubuntu] 입출력 리다이렉션 연산자 정리하기

johnna_endure 2020. 5. 27. 02:55

< , > , << ,  >> 를 이용해 IO의 방향을 정할 수 있습니다.


> 를 이용해 표준 출력을 파일에 저장

  

위의 예제는 cat 명령을 이용해 키보드 입력에 대한 출력을 example.txt 에 저장하는 예제입니다.

(cat 명령어에 아무런 옵션과 인수를 주지 않을 경우, 키보드 입력이 표준 출력으로 나오게 됩니다.)

 

위의 예제는 >>를 이용해도 결국 동일한 결과를 나타내게 됩니다.

 

>, >>의 차이는 뭘까요?

> 를 사용하는 경우 매번 새로운 example.txt 를 생성해 결과를 덮어쓰게 됩니다.

하지만 >> 를 사용하는 경우 기존의 example.txt에 결과를 이어서 쓸 수 있습니다.

>> 연산자를 이용해 결과를 이어붙였습니다.

 

이제 반대 방향인 < 도 써볼까요?

방향만 반대일 뿐 원리는 동일하네요

< 를 이용하니 cat의 표준 입력이 example.txt 내용을 화면에 출력하는 표준 출력으로 대체됐습니다.

 

그렇다면 << 는 어떻게 동작할까요?

cat << example.txt 라는 코드를 작성했다고 하죠. >> 를 썼던 경우와는 뭔가 상황이 달라졌습니다.

이전의 예제에서 >>는 뭔가를 이어 붙인다는 개념이었습니다.

 

그렇다면 표준 입력에서 뭔가를 이어 붙인다는 건 어떤 의미일까요?

 

heredoc이 뭔데?

갑자기 heredoc 이라는게 튀어나왔습니다.

 

이게 뭔고 보니 한 줄 단위 입력이 아니라 여러 줄의 입력을 받아주는 거네요.

간단하게 정리해보자면, cat 명령어처럼 표준 입력을 받는 명령어에 << 를 사용하면 여러 줄 입력이 가능하게 됩니다.

>> 예제에서 느꼈던 뭔가 이어 붙인다는 개념과도 어느 정도 들어맞네요.

 

 다시 제대로 예제를 작성해봅시다.

<< 뒤에 오는 건 delimiter(구획 문자) 입니다.

간단하게 말해서 문서의 끝을 지정하는 문자입니다. 보통 EOF(end of file?)과 같은 약자를 많이 쓰는 것 같네요. 

 

 

 

 

Comments