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
참고자료 2 : https://webstone.tistory.com/86
참고자료 4 : https://ciksiti.com/ko/chapters/3797-what-exactly-does-2-dev-null-do---linux-hint
'Programming > Linux' 카테고리의 다른 글
[Linux] locate 명령어 (0) | 2022.06.08 |
---|---|
[Linux] 파일 개수 및 디렉토리 개수 세기 (0) | 2022.03.28 |
[Linux] 사용했던 커맨드 확인하는 명령어 (명령어 히스토리) (0) | 2022.01.03 |
[Linux] dmidecode 사용하여 메모리 정보 확인하기 (0) | 2021.08.06 |
[Linux] Code Blocks 설치하기 (0) | 2021.07.01 |