programing

Windows에 /dev/null이 있습니까?

css3 2023. 4. 10. 22:06

Windows에 /dev/null이 있습니까?

에 상당하는 것은 무엇입니까?/dev/nullWindows 에서는요?

네가 원하는 것 같아NUL적어도 명령 프롬프트 또는 배치 파일 내에는 있습니다.

예를 들어 다음과 같습니다.

type c:\autoexec.bat > NUL

파일은 작성되지 않습니다.

(프로그래밍으로 파일을 작성하려고 해도 마찬가지라고 생각합니다만, 아직 작성하지 않았습니다.)

PowerShell에서는$null:

echo 1 > $null

GCC 메일링 목록의 다음 메시지에 따르면 /dev/null 대신 "null" 파일을 사용할 수 있습니다.

#include <stdio.h>

int main ()
{
    FILE* outfile = fopen ("/dev/null", "w");
    if (outfile == NULL)
    {
        fputs ("could not open '/dev/null'", stderr);
    }
    outfile = fopen ("nul", "w");
    if (outfile == NULL)
    {
        fputs ("could not open 'nul'", stderr);
    }

    return 0;
}

(이 코드에 대해 Danny에게 credits; 메시지에서 복사 붙여넣기)

리디렉션을 통해 이 특수 "null" 파일을 사용할 수도 있습니다.

NULWindows 에서는, 실제로는 어느 폴더에서도 가상 패스가 되는 것 같습니다.같은..,.모든 파일 시스템에서 사용할 수 있습니다.

NUL 뒤에 있는 모든 폴더를 사용합니다.

예,

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul

와 같은 효과가 있다/dev/nullLinux에서.

이것은 Windows 7, 64비트로 테스트되었습니다.

Jon Sket이 맞습니다.Windows Embedded 문서의 Nul Device Driver 페이지는 다음과 같습니다(다른 곳에 없는 이유를 알 수 없습니다).

다음은 또 다른 예입니다.

NUL프로그램적으로도 동작합니다.예:

freopen("NUL", "w", stderr);

파일을 작성하지 않아도 정상적으로 동작합니다.(MSVC++12).0)

마이크로소프트 윈도우즈에서 다음과 같은 심볼링크를 수행해야 하는 경우/dev/nullLinux 에서는, 를 열고,cmd다음과 같이 입력합니다.

파일의 경우:

mklink c:\path\to\file.ext NUL:

또는 디렉토리의 경우:

mklink /D c:\path\to\dir NUL:

이렇게 하면 파일/디렉토리는 항상 0바이트로 유지되며 모든 쓰기 시도에도 성공합니다.

Windows 10 에서는, NUL 를 파일처럼 사용하는 경우.

robocopy .\test NUL /move /minage:30 
# delete all files older than 30 days using robocopy

이 답변들은 모두 효과가 없습니다.

에러가 표시됩니다.

ERROR 123 (0x0000007B) Accessing Destination Directory \\.\NUL\
The filename, directory name, or volume label syntax is incorrect.

단, 이 기능을 사용하려면cmd.exe:

echo 1 > NUL

그렇게NUL꼭 그런 것 같지는 않다/dev/null파일.

단,robocopy명령어는 다음과 같은 작업을 수행할 수 있습니다.

robocopy .\test NUL\null /move /minage:30 

그럼 되겠네요!

Powershell에서는$nullstdout 리다이렉션으로만 동작합니다.

echo 1 > $null

하지만 당신은 사용할 수 없습니다.$null파일 대신 로보카피 같은 명령어를 사용합니다.둘 다 아니다$null\null일하다.

PowerShell의 cmd.exe와 같은 효과를 얻을 수 있는 것은cmd.exe다음과 같이 PowerShell 내에서 구현됩니다.

mkdir test1
cd test1
echo "" > test1.txt
echo "" > test2.txt
echo "" > test3.txt

$path = '.\test1'
cmd.exe /c "robocopy $path NUL\null /move"

# also this works:
cmd.exe /c "robocopy $path .\NUL\null /move"

그렇게NUL꼭 처럼 행동하지 않는다/dev/null폴더와 함께 사용하는 경우를 제외하고 대상 파일로 사용할 때 안에 팬텀 파일을 포함할 수 있는 폴더와 같습니다.>리다이렉트 하면 늘 디바이스/파일처럼 동작합니다.

에, 덧, 고, in, 고, 라, in, in, in, in, in, in, in, in, in, in, in in,cmd.exe 내다NUL는 없어요.이치노릇을 하다

Windows PowerShell에서는 start와 $NUL사용해야 합니다.

라고 가정하고 이 합니다.mySum이며, 「 」는 「 」입니다.5 10이치노

start .\mySum  5 10 > $NUL 2>&1

start된 프로세스를 이 프로세스는, 「이러한 프로세스」와 같은 입니다.이것은 다음과 같은 효과입니다.& . 。/B 창이 합니다.실행 중인 프로그램이 콘솔어플리케이션일 경우 시작새로운 창이 열리지 않도록 합니다.NUL와 의 동등어입니다./dev/null . 。2>&1리다이렉트하면 stderr은 stdout으로 리다이렉트 . stdout은 stderr stdout으로 합니다.NUL.

「 」에 할 수 있는 툴.NUL 이다.copy 반드시 「」, 「」를 /b(바이너리) 그렇지 않으면 OS에 의해 콘텐츠가 캐시되지 않습니다(그것이 목표였습니다).

OS 캐시에 디렉토리(재귀적)를 배치합니다.

for /f "delims=" %f in ('dir /s /b /a-d D:\Solr\data') do @copy /b "%f" nul > nul

(Sysinternals에서) RamMap을 사용하여 확인합니다.

언급URL : https://stackoverflow.com/questions/313111/is-there-a-dev-null-on-windows