📌 /dev/null
dev/null은 특수한 파일로 여기로 오는 모든 데이터를 버리는 마치 💫블랙홀 처럼 동작한다.
일반적으로 stdout 또는 stderr를 화면에 출력하지 않고 버리고 싶을 때 사용한다.
stat /dev/null 로 보면 이 파일의 유형은 character special file 이며
파일 size도 0이고 할당된 block도 0이다.실행 파일이 아니므로 | (pipe) 연산자를 사용할 수 없고 파일 redirection을 사용해야 한다.
📌 /dev/null Usage
1. 원하지 않는 출력 버리기
/dev/null 로 redirect 하면 결과를 버릴 수 있다.
2. 에러 메시지 숨기기
❌ 위와 같이 > /dev/null 만 작성하면 여전히 오류 메시지가 버려지지 않고 뜨게 된다.
이유: 오류 메시지는 stderr에서 오지만, 위 명령문은 stdout의 결과만 버리기 때문2>/dev/null 을 해주면 된다. (2는 stderr의 FD번호)
2>&1 로 하는 방법은 밑에서..
✅ 잘못된 명령어를 입력했지만 어떤 오류메시지도 출력되지 않는다.
사실 에러 메시지는 발생했지만 /dev/null로 redirect 되었기 때문에 표시되지 않는 것이다.
3. 파일을 사라지게 하기 (❌)
많은 사이트에서 sudo mv myfile.txt /dev/null로 파일을 사라지게 할 수 있다고 예시로 나와 있지만 이것은 매우 위험한 작업이라고 한다.
https://askubuntu.com/questions/435887/i-can-read-from-dev-null-how-to-fix-it
https://askubuntu.com/questions/192702/can-i-recover-a-file-from-dev-nullsudo mv myfile.txt /dev/null 하면 파일이 블랙홀에 들어가 삭제되는 것이 아닌
(심지어 /dev/null 파일을 cat해서 보면 내용을 그대로 볼 수 있다)
저렇게 하면 /dev/null 파일이 myfile.txt로 대체되어버린다.
더 이상 특수한 파일인 /dev/null을 사용할 수 없을 뿐더러
이 특수한 파일을 사용하는 곳에 오류를 발생시킬 수 있다.✅ 복구방법:
$ sudo rm /dev/null
$ sudo mknod -m 0666 /dev/null
📌 2>&1
- (File descriptor에서) 2는 stderr, 1은 stdout
- 즉, 표준 에러를 표준 출력으로 redirect 해라.
📌 command > /dev/null 2>&1
첫 번째 echooo 'Hello null' > /dev/null 은 당연히 잘못된 명령어를 /dev/null로 보내서 버리려고 했으나 이 문장은 stdout만 버리기 때문에 오류 메시지는 여전히 표시된다.종합하면 echooo 'Hello null > /dev/null 은 stdout을 블랙홀로 보내버리는 것이고,
여기에 더해 2>&1은 에러도(stderr) stdout으로 redirect 하는 것이므로
결국 > /dev/null 2>&1 은 stdout, stderr 모두 버리겠다는 의미이다. - 두 번째 echooo 'Hello null' > /dev/null 2>&1 에서 일단
2>&1 의 의미는 2(stderr)를 1(stdout)으로 redirect 시키는 것으로
1앞에 &가 붙은 이유는 그냥 1을 쓰면 파일이름이 1인 것으로 인식하지만
&1을 하면 File Descriptor의 1번, 즉 stdout을 가리키는 뜻이다.
설명을 잘 못해서 죄송합니다!! 😥
Ref
https://itslinuxfoss.com/what-is-dev-null-in-linux/
https://trendoceans.com/dev-null-to-suppress-output/
'[OS] > Linux' 카테고리의 다른 글
[참고] Putty 터미널 접속 색상 변경 !! (86) | 2024.01.12 |
---|---|
[참고] 리눅스 CPU 사용률 확인하는 3가지 방법!! (69) | 2024.01.05 |
[참고] 리눅스 date 명령어를 이용한 시간 확인 및 설정하기 (hwclock 포함) !! (74) | 2024.01.05 |
[참고][Linux][CentOS7] ipv6 비활성화!! (84) | 2023.12.27 |
[참고] Virtual Memory (SWAP 메모리) 확인 방법!! (96) | 2023.12.22 |
[참고] Red Hat Linux, Fedora, CentOS와 Rocky Linux의 관계!! (54) | 2023.12.05 |
[참고][Linux] sed 명령어 파일 편집 방법 (특수문자 / 처리 방법) (51) | 2023.11.28 |
[리눅스/유닉스] du 명령어, 디렉터리별 디스크 사용량 확인하기. 퍼센테이지 비율로 확인하기 , ls명령어와 크기가 다른 이유? (0) | 2023.07.17 |
댓글