Windows üzerinde / dev / null var mı?


414

/dev/nullWindows'taki eşdeğeri nedir ?

Yanıtlar:


488

NULEn azından bir komut istemi veya toplu iş dosyaları içinde istediğinizi düşünüyorum .

Örneğin:

type c:\autoexec.bat > NUL

bir dosya oluşturmuyor.

( Programlı bir dosya oluşturmaya çalışırsanız aynı şeyin geçerli olduğuna inanıyorum , ancak denemedim.)

PowerShell'de şunları yapabilirsiniz $null:

echo 1 > $null

20
@capthive: /dev/null.txt ve /dev/null/foo.txt arasında bir fark vardır.
Jon Skeet

2
Buna tekrar baktım ve orijinal ifademi geri çekiyorum. Kod yazmayı yapıyordum ve hata yutuldu. Onu siliyorum, böylece kimse yanlışlıkla gerçeği kabul etmiyor.
Jim Hunziker

3
: Windows altında Unix "özel" dosyaları arayan insanlar için buraya vardır /dev/randomve /dev/zeroWin32 için aygıt sürücüleri.
ulidtko

9
@CoDEmanX: Bu benim deneyimim değil. Konsola (hatta bir dosyaya) yazmak önemli ölçüde zaman alabilir. Ben sadece 10000000 kez stdout "Merhaba orada" yazılı bir program ile test ettim. Bir dosyaya (SSD'de) yeniden yönlendirme 18 saniye sürdü. NUL'a yönlendirme 4 saniye sürdü. Hiç yönlendirmemek beni bir süre sonra sabır eksikliğinden vazgeçti ...
Jon Skeet

2
Seni çok, özel cihaz adları sonra iki nokta üst üste yazması gerektiği Win95 zamanlarda geri öğrendim NUL:(ve CON:, PRN:, ...), Açıkça tarz ve gösteriler meselesi çoğunlukla NUL:özel nesnesi değil, adlı bir dosyadır NUL. Ayrıca, özel bir API ile çağrılan bir dosya yapmak da mümkündür NUL(cevaplardan birine bakın). Belki bir gün hayal ediyorum, eğer herkes kolonu konvansiyonla kullanırsa, korkunç özel cihaz adlarını kullanamayacağız :-)
jdm

65

GCC posta listesindeki bu iletiye göre , / dev / null yerine "nul" dosyasını kullanabilirsiniz:

#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;
}

( Bu kod için Danny'ye kredi ; mesajından kopya yapıştırıldı.)

Bu özel "nul" dosyasını yeniden yönlendirme yoluyla da kullanabilirsiniz.


1
Ah, bu yüzden C:\devWindows'ta bir dizin oluşturursanız ve çok sayıda GNU yardımcı programı kullanırsanız, nihayetinde bu dizinde null adında gizemli bir dosya edineceksiniz.
Klitos Kyriacou

50

NULWindows aslında herhangi bir klasörde sanal bir yol gibi görünüyor. Tıpkı .., .her dosya sisteminde.

NUL ile takip edilen herhangi bir klasörü kullanın.

Misal,

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

/dev/nullLinux ile aynı etkiye sahiptir .

Bu Windows 7, 64 bit üzerinde test edildi.


7
Güzel, Windows 7
64bit'te

7
@DawidFerenczy, klasik şekilde olmasa da mümkündür. Örneğin, md \\.\c:\nul quora.com/… , gohacking.com/how-to-create-con-folder-in-windows , superuser.com/questions/86999/…
phuclv

1
Windows 10'da birincisi, bir dosya oluştururnul
DrumM

win10 içinde java kullanarak IOException atar. Sadece yakalamaya çalışın sarın. / Dev / null gibi bir istisna / hata
olmayı ummuyordum

34

Jon Skeet doğru. İşte Windows Embedded belgelerindeki Nul Aygıt Sürücüsü sayfası (neden başka bir yerde olmadığına dair hiçbir fikrim yok ...).

İşte bir başkası:


69
Tabii ki Jon Skeet doğrudur. Açık ve evrensel bir gerçeği belirttiğiniz için teşekkür ederiz :)
R. Martinho Fernandes

1
Buradaki bağlantılardan 2 tanesi artık bozuk. :(
Michael Foukarakis

9

NULprogramlı olarak da çalışır. Örneğin:

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

dosya oluşturmadan beklendiği gibi çalışır. (MSVC ++ 12.0)


1
Sorunun cevaplanması gereken çok fazla zaman var ve NULbu nokta 5 yıl önce geçmişti.
miken32

6
Bence bu cevap tartışmaya geçerli bir katkı sağlıyor.
Jeroen

3

Microsoft Windows'da /dev/nullLinux'taki bir sembol bağlantısına eşdeğer bir performans sergilemeniz gerekiyorsa , açıp yönetici cmdve şunu yazabilirsiniz:

Dosyalar için:

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

Veya dizinler için:

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

Bu, dosyayı / direcotry'i her zaman 0 baytta tutacak ve yine de her yazma girişiminde başarıyı geri getirecektir.


-1

Windows PowerShell'de bunun için start ve $ NUL kullanmanız gerekir :

mySumUygulamanızın adı olduğunu ve 5 10gönderdiğiniz komut satırı bağımsız değişkenleri olduğunu varsayarak bu komutu yazın .

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

startKomut müstakil bir süreç, benzer bir etkiye başlayacaktır &. Bu /Bseçenek, çalıştırmakta olduğunuz program bir konsol uygulamasıysa yeni bir terminal penceresi açmayı engeller. ve NULWindows'un 'eşdeğeridir /dev/null. 2>&1Sonunda tüm gidecek Stdout'a, stderr yönlendirir NUL.


neden iniş vekili? lütfen açıklayın
HaSeeB MiR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.