/dev/null이란 무엇이며 어떻게 사용합니까?

What Is Dev Null How Use It



Linux는 다양한 목적을 위해 일부 가상 장치를 호스팅하는 흥미로운 운영 체제입니다. 시스템에서 실행되는 프로그램에 관한 한 이러한 가상 장치는 실제 파일처럼 작동합니다. 도구는 이러한 소스에서 데이터를 요청하고 공급할 수 있습니다. 데이터는 디스크에서 읽는 대신 OS에서 생성됩니다.

그러한 예 중 하나는 /dev/null입니다. 모든 단일 Linux 시스템에 있는 특수 파일입니다. 그러나 대부분의 다른 가상 파일과 달리 읽기 대신 쓰기에 사용됩니다. /dev/null에 쓰는 것은 무엇이든 버려지고 공허로 잊혀집니다. UNIX 시스템에서는 null 장치라고 합니다.







왜 허공에 무언가를 버리고 싶습니까? /dev/null이 무엇이고 그 사용법을 확인해보자.



전제 조건

/dev/null 사용법에 대해 자세히 알아보기 전에 표준 출력 그리고 표준 오류 데이터 스트림. 이것을 확인하십시오 에 대한 심층 가이드 표준 입력 , 표준 오류 , 그리고 표준 출력 .



빠르게 새로고침해 보겠습니다. 명령줄 유틸리티가 실행될 때마다 두 개의 출력이 생성됩니다. 출력은 다음으로 이동합니다. 표준 출력 오류(생성된 경우)는 표준 오류 . 기본적으로 이러한 데이터 스트림은 모두 터미널과 연결됩니다.





예를 들어, 다음 명령은 큰따옴표 안에 있는 문자열을 출력합니다. 여기서 출력은 다음 위치에 저장됩니다. 표준 출력 .

$던졌다헬로월드



다음 명령은 이전에 실행한 명령의 종료 상태를 보여줍니다.

$던졌다 $?

이전 명령이 성공적으로 실행되었으므로 종료 상태는 0입니다. 그렇지 않으면 종료 상태가 달라집니다. 잘못된 명령을 실행하려고 하면 어떻게 됩니까?

$ adfadsf
$던졌다 $?

이제 파일 디스크립터에 대해 알아야 합니다. UNIX 생태계에서 이들은 파일에 할당된 정수 값입니다. 둘 다 표준 출력 (파일 설명자 = 1) 및 표준 오류 (파일 설명자 = 2)에는 특정 파일 설명자가 있습니다. 파일 설명자(이 상황에서는 1과 2)를 사용하여 리디렉션할 수 있습니다. 표준 출력 그리고 표준 오류 다른 파일에.

우선 다음 예는 리디렉션합니다. 표준 출력 echo 명령을 텍스트 파일로 변환합니다. 여기서는 파일 기술자를 지정하지 않았습니다. 지정하지 않으면 bash는 다음을 사용합니다. 표준 출력 기본적으로.

$던졌다헬로월드>log.txt

다음 명령은 표준 오류 텍스트 파일로.

$asdfadsa2>error.txt

/dev/null 사용

출력을 /dev/null로 리디렉션

이제 /dev/null 사용법을 배울 준비가 되었습니다. 먼저 정상 출력과 오류를 필터링하는 방법을 알아보겠습니다. 다음 명령에서 grep은 /sys 디렉토리에서 문자열(이 경우 hello) 검색을 시도합니다.

$꽉 붙잡음 -NS안녕하십니까/시스템/

그러나 루트 권한이 없으면 grep이 여러 파일에 액세스할 수 없기 때문에 많은 오류가 발생합니다. 이러한 경우 권한 거부 오류가 발생합니다. 이제 리디렉션을 사용하여 더 명확한 출력을 얻을 수 있습니다.

$꽉 붙잡음 -NS안녕하십니까/시스템/ 2> /개발자/없는

출력이 훨씬 좋아보이죠? 아무것도! 이 경우 grep은 많은 파일에 액세스할 수 없으며 액세스 가능한 파일에는 hello 문자열이 없습니다.

다음 예에서는 Google에 ping을 보냅니다.

$구글 컴

그러나 우리는 모든 성공적인 핑 결과를 보고 싶지 않습니다. 대신 ping이 Google에 도달할 수 없을 때의 오류에만 집중하고 싶습니다. 어떻게 합니까?

$구글 컴1> /개발자/없는

여기서의 내용은 표준 출력 /dev/null에 덤프되어 오류만 남습니다.

모든 출력을 /dev/null로 리디렉션

특정 상황에서는 출력이 전혀 유용하지 않을 수 있습니다. 리디렉션을 사용하여 모든 출력을 void에 덤프할 수 있습니다.

$꽉 붙잡음 -NS안녕하십니까/시스템/ > /개발자/없는2> &1

이 명령을 조금 깨자. 첫째, 우리는 모든 것을 버리고 표준 출력 /dev/null로. 그런 다음 두 번째 부분에서 bash에게 다음을 보내도록 지시합니다. 표준 오류 에게 표준 출력 . 이 예에서는 출력할 것이 없습니다. 그러나 혼란스러우면 명령이 성공적으로 실행되었는지 항상 확인할 수 있습니다.

$던졌다 $?

명령이 많은 오류를 생성했기 때문에 값은 2입니다.

파일 디스크립터를 잊어버리는 경향이 있는 경우 표준 출력 그리고 표준 오류 , 다음 명령은 잘 수행됩니다. 이전 명령의 보다 일반화된 형식입니다. 둘 다 표준 출력 그리고 표준 오류 /dev/null로 리디렉션됩니다.

$꽉 붙잡음 -NS안녕하십니까/시스템/ &> /개발자/없는

다른 예

이것은 흥미로운 것입니다. dd 도구를 기억하십니까? 파일 변환 및 복사를 위한 강력한 도구입니다. dd 에 대해 자세히 알아보세요. dd를 사용하여 디스크의 순차 읽기 속도를 테스트할 수 있습니다. 물론 정확한 측정은 아닙니다. 그러나 빠른 테스트에는 꽤 유용합니다.

$dd 만약=<큰 파일> NS=/개발자/없는상태=진행bs=1백만이플래그=직접

여기서는 Ubuntu 18.04.4 ISO를 큰 파일로 사용했습니다.

마찬가지로 인터넷 연결의 다운로드 속도를 테스트할 수도 있습니다.

$wget -또는 /개발자/없는<big_file_link>

마지막 생각들

이 /dev/null 파일이 무엇인지 분명히 이해하셨기를 바랍니다. 기록되면 버리고 읽히면 null을 읽는 특수 장치입니다. 이 흥미로운 기능의 진정한 잠재력은 흥미로운 bash 스크립트에 있습니다.

bash 스크립팅에 관심이 있습니까? 체크 아웃 bash 스크립팅 초보자 가이드 .

즐기다!