728x90
반응형

 

1. 표준 스트림 

 

리눅스 환경에서 표준 스트림은 다음과 같이 구분된다. 

 

  • 표준 입력 스트림(standard input, stdin)
  • 표준 출력 스트림(standard output, stdout)
  • 표준 에러 스트림(standard error, stderr)

 

 

2. 리다이렉션(Redirection) 

 

리다이렉션을 이용하면 각 스트림의 방향을 지정 할 수 있다. 

종류 기호 사용법 설명
표준출력(덮어쓰기) > 명령어 > 파일 명령어의 표준출력 스트림의 도착 지점을 파일로 설정(덮어쓰기)
표준출력(추가) >> 명령어 >> 파일 명령어의 표준출력 스트림의 도착 지점 파일에 내용을 추가
표준입력 < 명령어 < 파일 파일로부터 입력 받음 

 

 

 

 

3. /dev/null

 

리눅스 기반 시스템에는 가상 장치라는 기능이 있는데 이러한 가상 장치는 운영체제의 실제 파일 처럼 상호작용 하게 된다. 

이러한 가상 장치의 작동은 실제 장치와 유사하며, 데이터를 읽고 쓰는데 사용된다. 이 둘의 주요 차이점은 가상장체에 대한 데이터가 운영체제에서 제공된다라는 것이다. /dev/null 은 특수한 유형의 가상장치인 null 장치라고 할 수 있다. 블랙홀 이라고 이해하면 쉽다. 

 

/dev/null 에 내용을 보내면 그 내용은 null 값으로 되어버린다. 

보통 필요하지 않은 출력을 제거하기 위해 사용한다. 

 

표준 스트림은 3가지로 분류할 수 있으며, 각 표준 스트림에 따른 파일 디스크립터는 다음과 같다. 

 

  • 표준 입력 : stdin, 파일 디스크립터 0
  • 표준 출력 : stdout, 파일 디스크립터 1
  • 표준 오류 : stderr, 파일 디스크립터 2

 

 

3.1 표준출력 /dev/null 처리하기 

 

리눅스 환경의 터미널에서 명령어를 입력하고 그에 대한 표준 출력이 표시되지 않도록 사용하는 방법은 아래와 같다. 

 

~$ command > /dev/null

 

아래와 같이 사용하기도 한다. 

 

~$ command 1> /dev/null

 

 

예를 들어 test.txt 라는 파일에 "hello world" 라는 내용이 담겨 있을 때

cat 명령어를 통해 내용을 출력할 경우 아래와 같이 출력된다. 

 

~$ cat test.txt
hello world

 

 

표준 출력을 버릴 경우 아무 결과도 출력되지 않는다.  

 

~$ cat test.txt > /dev/null

 

 

 

 

 

 

3.2 표준오류 /dev/null 처리하기 

 

아래와 같이 '2>' 는 표준 오류를 처리한다는 표시이다. 

command 2> /dev/null

 

 

아래와 같이 없는 파일을 cat 명령을 줄 경우 오류가 발생한다. 

~$ cat null.txt
cat: null.txt: No Such file of directory

 

 

표준 오류를 /dev/null 처리하면 아무런 출력도 없는 결과를 볼 수 있다. 

 

~$ cat null.txt 2> /dev/null

 

 

 

3.3 응용하기 

 

쉘 스크립트에서 다음과 같은 구문을 볼 수 있는데,

이와 같은 구문은 표준 출력을 null 장치로 리다이렉션 하고,

표준 오류에 대한 리다이렉션을 표준 출력으로 한다는 것을 의미한다. 

 

즉 표준출력과 표준오류 출력을 둘 다 무시하게 된다. 

 

~$ command > /dev/null 2>&1

 

 

 

 

참고자료 1 : https://losskatsu.github.io/os-kernel/linux-redirection/#%EB%A6%AC%EB%88%85%EC%8A%A4---%EB%A6%AC%EB%8B%A4%EC%9D%B4%EB%A0%89%EC%85%98redirection-%ED%8C%8C%EC%9D%B4%ED%94%84pipe%EC%9D%98-%EA%B0%9C%EB%85%90

 

[리눅스] 리다이렉션(redirection), 파이프(pipe)의 개념

리눅스 - 리다이렉션(redirection), 파이프(pipe)의 개념

losskatsu.github.io

 

참고자료 2 : https://webstone.tistory.com/86

 

/dev/null 의미

리눅스로 쉘 스크립트를 하게 되면 종종 /dev/null이라는 것을 볼 수 있다. 필자도 요즘 쉘 스크립트를 하면서 자주보게 되는 것이 바로 "/dev/null"이다. 그럼 도대체 이 "/dev/null"이라는 친구는 뭐하

webstone.tistory.com

 

참고자료 3 : https://onlyhow.net/ko/linux%EC%97%90%EC%84%9C-dev-null%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C

 

Linux에서 /dev/null이란 무엇입니까? - Onlyhow

기술적인 측면에서, /dev/null 가상 장치 파일입니다. 프로그램에 관한 한 이들은 실제 파일처럼 취급됩니다. 유틸리티는 이러한 종류의 소스에서 데이터를 요청할 수 있으며 운영 체제는 데이터

onlyhow.net

 

참고자료 4 : https://ciksiti.com/ko/chapters/3797-what-exactly-does-2-dev-null-do---linux-hint

 

2>/dev/null은 정확히 무엇을 합니까? – 리눅스 힌트

2>/dev/null은 정확히 무엇을 합니까? – 리눅스 힌트 범주 잡집 | July 31, 2021 10:06 Teachs.ru 새로운 Linux 사용자이든 경험 많은 bash 프로그래머이든 간에 2>/dev/null이라는 암호 같은 명령을 접했을 가능

ciksiti.com

 

728x90
반응형