본문 바로가기
리눅스,네트워크

리눅스 리다이렉션(IO Redirection) 개념

by 데이널 2023. 10. 27.

이번 포스팅에서는 리눅스의 리다이렉션 개념에 대해 알아보도록 하겠습니다. 정확히 말하면 Input Output Redirection의 약자로 리눅스 환경에서 입력과 출력의 방향에 대한 개념입니다. 

 

 

IO Redirection이란

보통 리눅스는 UI 환경보다는 CLI(command line interface)에서 사용하게 됩니다. CLI 환경에서 명령어를 통해 터미널에 입력한 결과를 다른 방식으로 입출력을 하는 방법을 IO Redirection 이라합니다. 예를들어, 터미널에서 "ls -l"을 입력하면 터미널에 현재 디렉토리의 목록을 출력하는 것은 "standard output” 방법으로 터미널에 표시하게 되는 것입니다. Redirection 3가지 Standard Output, Standard Input, Standard Error Redirection에 대해 각각 살펴보겠습니다. 

 

리눅스 리다이렉션(IO Redirection)
리눅스 리다이렉션(IO Redirection)


Standard Output Redirection

스탠다드 아웃풋 리다이렉션은 보통 출력된 목록을 터미널 화면이 아닌, 파일에 저장하고 싶거나 다른 방법으로 출력을 원할 때 사용됩니다. 예를 들어,  앞에서 언급했던 "ls –l" 출력 결과를 test.txt 라는 파일에 저장하는 방법은 다음과 같이 하면 됩니다. 

  • ls –al > result.txt 

그리고 어떤 출력 결과가 나왔는지 확인하고 싶을 때는 cat 명령어를 통해 "cat result.txt"로 확인할 수 있습니다. ">" 출력방향을 바꿀 때 쓰는 기호로 이 뒤에 출력할 곳(파일명 등)을 적으면 리다이렉션 됩니다. 

 

Standard Input Redirection

스탠다드 인풋 리다이렉션은 “<“을 이용하여 입력 값으로 줄 수가 있습니다. 예를 들어, "cat < result.txt" 명령어를 수행하면 cat의 Input으로 값이 들어가며 cat result.txt와 같은 동작을 하게 됩니다. 단순한 예를 들었지만 이런 방식으로 명령어에 Input으로 값을 줄 수도 있습니다. 


Standard Error Redirection

스탠다드 에러 리다이렉션은 아래 예제를 통해 설명하도록 하겠습니다. 

  • rm result.txt -- 파일 삭제
  • cat result.txt -- error 발생
  • cat result.txt > error.log 

위를 차례로 실행하면 Redirection 안되서 아래와 같은 에러가 나게 됩니다. 

  • ERROR cat: result.txt: No such file or directory

이제 모든 준비가 다 되었습니다. Standard Error로 Redirection 할 때에는 꺽쇠 앞에 숫자 2를 붙여야 합니다.("2>")

  • cat result.txt 2> error.log

이렇게 하면 위에 메시지가 화면으로 출력되는 것이 아니라 error 출력이 error.log에 담기게 됩니다. 추가적으로 말하면 Standard Output에서도 사실 꺽쇠 앞에 숫자 1이 생략된 것입니다.("1>") 즉, Standard Output으로 Redirection 할때는 "1>"이고, Standard Error를 Redirection 할때는 "2>"로 하면 출력이 가능하다는 이야기 입니다.