리다이렉션

리다이렉션이란 표준 입력이나 표준 출력을 꼭 키보드나 화면으로 하는 것이 아니라 방향을 바꿔서( == 리다이렉션 ) 파일로 입력을 받거나 파일로 출력하도록 변경하는 것을 말합니다.

리다이렉션은 쉘 스크립트를 작성할 때 매우 유용하게 쓰일 수 있습니다.




1. 표준 출력 변경

표준 출력을 변경할 때는 cat 명령어> 또는 >>를 사용합니다.

cat 명령어는 원래 표준 입력인 키보드로부터 입력 받은 내용을 표준 출력인 터미널로 보내는 명령어입니다.

그러나 다음과 같이 cat > 파일명 명령어를 실행하고 파일의 내용을 작성한 후 ctrl + c를 눌러 종료하면,

키보드로부터 입력 받은 내용을 파일로 떨어뜨립니다.


>가 아닌 >>으로 할 경우, 같은 이름의 기존 파일이 있을 때 그 파일에 이어서 내용이 추가됩니다.
기존 파일이 있는데, >을 사용할 경우 그 파일은 덮어씌어져서 저장이 됩니다.




2. 표준 입력 변경 
표준 입력을 변경할 때는 <를 사용합니다.
예를 들어, 파일로부터 내용을 입력 받아 화면에 뿌려주려면 cat < 파일명으로 명령어를 실행할 수 있습니다.




3. 표준 에러 변경

표준 에러를 변경하려면 2>를 사용합니다.

예를 들어, 표준 에러를 화면에 뿌리지 않고 파일로 저장하려면 다음과 같이 작성할 수 있다.


/aaaaaaaa 파일이 없으므로 원래는 화면에 에러를 출력해야 하지만 리다이렉션을 했으므로 파일에 저장됩니다.

마찬가지로 2> 대신 2>>를 사용하면, 기존 파일이 있을 경우 파일에 새로운 내용이 이어서 추가됩니다.





4. 응용

표준에러 변경할 때 사용했던, 2>에서 2의 의미는 표준 에러를 의미하는 파일 기술자입니다.

0은 표준 입력, 1은 표준 출력을 의미합니다.


이를 활용하여 다음과 같이 정상적인 경우에는 A파일에, 에러인 경우 B파일에 저장될 수 있도록 할 수 있습니다.


또한 &를 사용하면, 표준 출력과 표준 에러를 한 파일에 저장할 수 있습니다.





이상으로 리다이렉션에 대해 알아보았습니다.