본문으로 바로가기

리눅스 표준 입출력 리다이렉션

category 리눅스/Linux 일반 2013.11.17 04:43

쉘에서 키보드로 명령을 입력받는 것을 표준 입력(Standard Inupt)이라 하며, 키보드로 입력 받은 명령의 실행결과를 모니터로 출력하는 것을 표준 출력(Standard Outpu)이라고 합니다.

입출력 리다이렉션

쉘에서 명령의 결과를 모니터로 출력하지 않고 파일로 저장할 수 있는데 이때 리다이렉션을 사용한다. 리다이렉션을 사용하여 출력과 입력의 방향을 지정해 줄 수 있다.

리다이렉션 기호 방향 의미
> 표준 출력 명령 > 파일 : 명령의 결과를 파일로 저장
>> 표준 출력(추가) 명령 >> 파일 : 명령의 결과를 기존 파일 데이터에 추가
< 표준 입력 명령 < 파일 : 파일의 데이터를 명령에 입력

기타 리다이렉션 기호의 쓰임은 아래와 같다.

  • 명령 >& 파일명 : 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
  • 명령 >>& 파일명 : 명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력
  • 명령 >! 파일명 : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과를 파일로 출력
  • 명령 >&! 파일명 : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
  • 명령 >>! 파일명 : 파일의 존재 유무와 상관없이 생성하고 파일에 덧붙여 출력
  • 명령 >>&! 파일명 : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일에 덧붙여 출력
  • 명령A | 명령B : 명령A의 출력을 명령B 입력으로 사용하여 실행
  • 명령A |& 명령B : 명령A의 출력과 에러를 명령 B의 입력으로 사용하여 실행

파일 디스크립터

표준 입력과 표준 출력 그리고 표준 에러를 쉘이나 시스템 프로그래밍에서는 숫자로도 표현할 수 있는데 이를 파일 디스크립터라고 한다.

구분 장치 파일 디스크립터
표준 입력 키보드 0
표준 출력 모니터 1
표준 에러 모니터 2

/dev/null 2>&1

/dev/null은 0 값을 갖는 null 파일이고 표준 에러(2)를 표준 출력(1)으로 리다이렉션 하라는 의미이다.


신고

댓글을 달아 주세요

  1. BlogIcon 김진영 2015.06.21 06:30 신고

    완전좋아

  2. taso 2015.11.24 10:24 신고

    맨마지막줄 잘못적으셨네요. 1은 표준출력을 나타내고, 1앞의 &은 파일디스크립터로의 리다이렉션을 나타내기 위해 사용됩니다. 백그라운드 모드로 동작하기 위한 &은 뒤에 숫자없이 혼자서 쓰입니다.
    여튼 글들 잘보고 있습니다 :)

    • BlogIcon 흉내쟁이 2015.11.24 21:39 신고

      말씀하신것이 맞고 이를 수정하였습니다. 기록이 도움이 되길 바라지만 잘못된 정보가 제공되진 않을까 언제나 염려스러운 부분입니다. 좋은 지적에 감사드립니다^^

  3. red 2017.06.01 21:48 신고

    근데 한가지 지적을 하면 null = 0 이 아닙니다... 널값은 말그대 아무런 값이 없는 상태입니다.. 0이라는 것은 0이라는 값이 존재을 하는 것을 말하는 것이구요...쉽게 말씀드리면 비어있는 바구니와 같다는 거죠...

티스토리 툴바