메뉴 건너뛰기

(*.168.0.1) 조회 수 256 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기
Extra Form

유닉스 파일 디스크립터 : > /dev/null 2>&1

유닉스 가이드를 읽던 중 아래와 같은 예제 구문이 나왔다.

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

저 /dev/null 2>&1 형태는 예전에 크론탭 동작하는 쉘에서도 언뜻 본 기억이 있는데,..
정확히 무슨 뜻일까?
 

해결책:
위 구문을 이해하기 위해 일단 유닉스의 파일 디스크립터(File Descriptor)에 대해 알아보자.

유닉스 프로그램이 파일에 뭔가 작업을 하기 위해서는 일단 파일을 열어야 한다.
이 때, 유닉스는 열려있는 파일을 구분하기 위해 파일에 간단한 숫자를 붙인다.
이 숫자를 파일 디스크립터라고 하고, 0부터 9까지 존재한다.

유닉스 프로그램은 기본적으로 아래 3개의 "파일"을 열어둔다.
- Standard Input (표준 입력, STDIN, 키보드)
- Standard Output (표준 출력, STDOUT, 스크린)
- Standard Error (표준 에러, STDERR, 스크린에 뿌려질 에러 메세지)

열려있는 표준 파일은 구분을 위해 숫자(파일 디스크립터)를 할당받으며, 각각 아래와 같다.
STDIN = 0, STDOUT = 1, STDERR = 2 

0, 1, 2 외의 파일 디스크립터(3~9)는 추가로 열리는 다른 파일을 구분하기 위해 사용된다.


리다이렉션(redirection, 재지향)은 열려있는 파일의 입출력을 다른 파일로 변활할 때 사용된다.
리다이렉터는 ">"로 나타내며, 쉽게, "모든 출력은 꺽쇠의 방향으로!" 라고 이해하면 된다. 
 

라다이렉터는 파일 디스크립터와 함께 사용될 수 있으며, 몇 가지 예를 들면 아래와 같다.

  > file
      표준 출력을 파일로 보낸다.
  1> file
      위와 동일하다. > 앞의 1은 표준 출력에 대한 파일 디스크립터를 나타낸다. 
  2> file 
      에러 출력을 file 로 보낸다.
  < file
      file로부터 표준 입력을 받는다.
  0< file
      위와 동일하다. < 앞의 0은 표준 입력 파일 디스크립터를 나타낸다.
  i>&j
      
i번 파일 디스크립터를 j번 파일 디스크립터로 리다이렉트한다.
      즉, i가 가리키는 파일의 모든 출력은 j가 가리키는 파일로 보낸다. 


따라서, 위 문제점에서의 구문은 아래와 같은 형태로 정리될 수 있다.
$cat notexist > /dev/null 2>&1


cat notexist : notexist 파일의 내용을 조회해서,
> : (표준 출력으로) 나오는 결과를 다음 파일로 보낸다.
/dev/null
 : 유닉스의 블랙홀과 같은 파일이다. 이 파일을 모든 출력을 흡수한다. (보이지 않는다.)
2> : 에러 메세지가 발생할 경우에는, 즉 에러 출력을,
&1 : 1번 표준 출력 파일 디스크립터가 참조하고 있는 곳으로 보낸다.

즉, 조회한 내용과 발생한 에러 모두 표시하지 않겠다는 뜻이었다.
 

 

  1. ps에서 pid 목록만 가져와서 kill하기

  2. 05. 프로세스 스케줄러 2

  3. CentOS 7 / SSH / 포트 변경하는 방법

  4. CentOS 7 / ntp로 시간 동기화 하는 방법

  5. No Image 21Mar
    by
    2023/03/21 Views 359 

    CentOS 7 / ReHat 7 / ProLinux 7 sendmail 설치 및 세팅

  6. No Image 06Mar
    by
    2023/03/06 Views 632 

    EOS,EOL,EOD,EOST,EOSL이란?

  7. No Image 06Mar
    by
    2023/03/06 Views 290 

    BYOL : Bring Your Own License

  8. No Image 05Mar
    by
    2023/03/05 Views 312 

    리눅스에서 커널 버전, uname -a , cat /proc/version

  9. Ubuntu 20.04 LTS (Focal Fossa) 데스크탑 달라진 점과 간단 후기

  10. Ubuntu 20.04 LTS (Focal Fossa) 데스크탑 설치 후 해야하는 것들

  11. Ubuntu release 일람표

  12. UMASK 사용법

  13. No Image 10Oct
    by
    2018/10/10 Views 297 

    Ubuntu 18.04 한글 설정

  14. No Image 10Oct
    by
    2018/10/10 Views 308 

    Ubuntu 18.04를 설치한 뒤에 해야 할 6가지

  15. No Image 10Oct
    by
    2018/10/10 Views 462 

    Auto root Login 설정 - Ubuntu 18.04

  16. Micro VAX

  17. No Image 24Feb
    by
    2017/02/24 Views 385 

    Linux, Unix, AIX 명령어 비교

  18. Ubuntu - 우리가 함께 있기에 내가 있다

  19. No Image 10May
    by 정보제공
    2016/05/10 Views 256 

    유닉스 파일 디스크립터 : > /dev/null 2>&1

  20. No Image 05Apr
    by
    2016/04/05 Views 296 

    ab -n 1000 -c 3 http://home.aiinfo.co.kr/

목록
Board Pagination Prev 1 2 3 Next
/ 3