리눅스는 모든 것을 파일처럼 취급합니다.
실제 파일은 물론이고 주변 장치도 파일처럼 취급합니다.
가령 dev 디렉터리는 device의 약어로 하위에 연결된 장치들이 파일처럼 위치하게 됩니다.
이것은 입력, 출력에도 동일하게 해당됩니다.
입력과 출력은 입력 스트림, 출력 스트림의 약어로
입력 스트림의 대표적인 것은 키보드이고
출력 스트림의 대표적인 것은 모니터입니다.
입력 스트림은 stdin(standard input)이며
출력 스트림은 stdout(standard output)입니다.
에러도 출력 스트림이지면 특별히 stderr(standard error)로 정의해 두었습니다.
이 각각도 파일처럼 취급되기 때문에
파일에 접근할 때 사용하는 파일 디스크립터(File Descriptor)가 할당되어 있습니다.
stdin, stdout, stderr은 시스템의 기본적인 입출력 스트림이기 때문에
파일 디스크립터가 고정값으로 지정되어 있습니다.
stdin = FD0 stdout = FD1 stderr = FD2 |
파일 디스크립터를 이용하면 재지정(redirect)을 할 수 있습니다.
가령 stderr을 stdout 으로 보내고 싶으면 2>1 이 됩니다.
$ curl https://www.google.com 2> response.txt |
재지정의 기본 값은 1이기 때문이 1> 과 > 는 동일한 의미가 됩니다.
입출력 스트림의 파일 디스크립터는 사용하는 프로그램이
어떤 출력으로 어떤 값을 내보내는지를 이용하여
다른 애플리케이션 등으로 연동할 때 유용하게 쓸 수 있습니다.
#리눅스 #기본명령어 #스트림 #입출력스트림 #파일디스크립터 #fd #stdin #stdout #stderr