본문 바로가기

ETC/Linux

[Linux] 표준 입출력 리다이렉션

  • 표준 입력 (Standard Input) 키보드로 명령을 입력받는 것
  • 준 출력 (Standard Output) 키보드로 입력받은 명령의 실행결과를 모니터로 출력하는 것


  • > : 표준 출력 : 명령 > 파일 (명령의 표준 출력 결과를 일로 출력)
  • >> : 표준 출력(추가) : 명령 >> 파일 (명령의 표준 출력 결과를 기존 파일 내용 이후에 출력)
  • < : 표준 입력 : 명령 < 파일 (파일의 데이터를 읽어 명령의 표준입력으로 사용)


  • 명령 >& 파일명 : 명령의 표준 출력 결과와 에러를 파일로 출력
  • 명령 >>& 파일명 : 명령의 표준 출력 결과와 에러를 기존 파일 내용 이후에 덧붙여 출력
  • 명령 >! 파일명 : 파일을 생성하고 명령의 표준 출력 결과를 파일로 출력
  • 명령 >&! 파일명 : 파일을 생성하고 명령의 표준 출력 결과와 에러를 파일로 출력
  • 명령 >>! 파일명파일을 생성하고 명령의 표준 출력 결과를 기존 파일 내용 이후에 덧붙여 출력
  • 명령 >>&! 파일명 : 파일을 생성하고 명령의 표준 출력 결과와 에러를 기존 파일내용 이후에 덧붙여 출력
  • 명령A | 명령B : 명령A 의 출력을 명령B 의 입력으로 사용
  • 명령A |& 명령B : 명령A 의 출력과 에러를 명령B 의 입력으로 사용


  • 파일 디스크립터 (File descriptor) : 열려있는 파일을 구분하기 위해서 붙이는 숫자
    1. 표준 입력 (Standard Input) / 키보드 / 0
    2. 표준 출력 (Standard Output) / 모니터 / 1
    3. 표준 에러 (Standard Error) / 모니터 / 2


$ cat notexist > /dev/null 2>&1

notexist 파일의 cat 명령 표준 출력 결과를 /dev/null 로 리다이렉션 시킨다.

이때 /dev/null의 경우 모든 출력을  흡수한다.

에러메시지를 1번 표준 출력 디스크립터가 참조하고 있는곳으로 리다이렉션 시킨다.

> 즉, 조회한 내용을 흡수시켜 표시하지 않으며, 발생한 에러역시 1번 디스크립터로 리다이렉션시켜 모두 출력하지 않겠다.


$ abcd > /dev/null 2>&1

명령 abcd 의 결과를 /dev/null 로 리다이렉션 시켜 흡수하고,

발생한 에러를 1번 디스크립터의 참조인 /dev/null 로 보내 흡수시킨다.

> 즉, abcd 는 존재하지 않는 명령어이기 때문에 에러가 발생하고, 발생한 에러를 출력하지 않겠다.