티스토리 뷰

오늘은 표준 입출력에서 사용되는 리디렉션과 파이핑에 대해서 알아 보도록 하겠습니다.

표준 입출력

모든 프로그램이 실행 될 때 3가지의 데이터 스트림이 열립니다.

  • STDIN(0) : 프로그램에 데이터를 입력해주는 스트림 표준 입력
  • STDOUT(1) : 프로그램이 기본 터미널에 출력하는 스트림 표준 출력
  • STDERR(2) : 에러 메시지를 출력하는 스트림, 에러 출력
  • 이렇게 총 3가지 스트림은 프로세스 간의 통신을 위해 존재 합니다. 이 스트림을 잘 이용하기 위해서 리디렉션파이핑 을 사용하면 됩니다.

    리디렉션(Redirection)

    리디렉션에 있는 2개의 종류 ><에 대해 알아 보도록 하겠습니다.

    리디렉션(>)

    리디렉션 >는 프로그램의 출력을 파일로 연결 합니다.

    표준 출력에서 파일로 리디렉션

    
                ls
                hello  world        
                ls > 1.txt
                cat 1.txt
                1.txt
                hello
                world
            
    ls > 1.txt에서 ls의 결과 값(=표준 출력)이 1.txt에 저장되었습니다.

    리디렉션(<)

    리디렉션 <는 파일의 표준 출력을 프로그램의 입력으로 연결 합니다.

    파일에서 표준 입력으로 리디렉션

    
                cat < 1.txt
                1.txt
                hello
                world
            
    cat < 1.txt에서 1.txt의 내용이 cat의 입력값(=표준 입력)으로 연결되었습니다.

    파이핑(Piping)

    파이핑(|)

    파이핑 |는 프로그램의 출력 다른 프로그램의 표준 입력으로 연결합니다.

    프로그램의 출력을 다른 프로그램 입력으로 파이핑

    
                cat 1.txt | cat
                1.txt
                hello
                world
            
    cat 1.txt의 결과값(=표준 출력)이 다시 cat에 입력값(표준 입력)으로 연결되었습니다.

    리다이렌션 >와 파이핑 |의 차이점

    
                        cat 1.txt | cat
                        1.txt
                        hello
                        world
                        cat 1.txt > cat # 결과값이 없습니다.
                    
    리다이렌션 >는 프로그램의 표준 출력만 전달 하기 때문에 > 뒤에 있는cat에 표준 입력으로 연결되지 않기 때문에 마지막 줄에서 결과값이 나오지 않습니다.

    댓글
    공지사항