'Error Redirection'에 해당되는 글 1건

  1. 2017.01.13 Linux에서 Error Redirection 처리하기 2

Linux Shell에서 명령어를 실행할 때 에러에 대한 부분을 파일로 저장한다거나 에러만 찾아서 추가적인 처리를 하고 싶을 때 Error Redirection이라는 기능을 사용할 수 있습니다.


매번 찾아봐야 하는 수고로움이 있지만 귀차니즘 때문에 못하다가 결국 이제야 정리를 해서 간단하게 올려봅니다.


참고적으로 아래의 내용은 Linux에서 표준이라고 일컫는 Bash Shell에서 정상적으로 작동합니다. 다른 Shell이라면 어떻게 될지 알 수가 없습니다.


Linux에서 많이 사용하는 Bash 또는 여타 Shell에서 사용자는 다양한 I/O 관련 Redirection(리다이렉션) 기능을 사용하여 많은 일을 할 수가 있습니다.


일단 Bash Shell은 아래의 세 가지 파일 오픈에 대한 스트림을 지원하고 있습니다.

    • stdin : 키보드를 통한 데이터 입력(input)
    • stdout : 명령어 실행시 출력되는 내용을 화면에 표시
    • stderr : 명령어 실행시 발생하는 에러 메세지를 화면에 표시


위의 I/O 스트림 처리를 위해 Bash Shell은 아래처럼 특별한 핸들러를 또한 제공하고 있습니다.

 Handler (핸들러)

Name (이름)

Description (설명) 

 0

 stdin

 Standard input

 1

 stdout

 Standard output

 2

 stderr

 Standard error


위에서 설명한 내용을 바탕으로 아래의 작업에 활용할 수 있습니다.

  1. Redirect stdout to a file
  2. $ ls -l > ls-l.txt


    => 'ls -l' 명령어를 실행하여 화면에 출력되는 결과 모두를 'ls-l.txt' 파일을 생성하여 저장함

  3. Redirect stderr to a file
  4. $ grep da * 1> grep-errors.txt


    => 'grep-errors.txt' 파일을 생성한 후 'grep' 명령어 수행시 Error로써 출력되는 부분만 저장됨

  5. Redirect stdout to a stderr
  6. $ grep da * 1>&2


    => 'grep' 명령어 수행 결과를 stderr으로 리다이렉션시킴

  7. Redirect stderr to a stdout
  8. $ grep da * 2>&1


    => 'grep' 명령어 수행 중 발생하는 Error를 stdout으로 리다이렉션시킴

  9. Redirect stderr to a stdout to a file
  10. $ find /etc -name '*test*' 2>&1 > find_test.txt


    => 'find' 명령어 수행 중 발생하는 Error를 stdout으로 리다이렉션 후 파일로 저장함

    => Error 메세지를 보지 않으려면 파일명 대신에 /dev/null을 지정할 수도 있음



Posted by 겨울이 오나보다
이전버튼 1 이전버튼