Есть ли в Windows / dev / null?

Что эквивалентно /dev/null в Windows?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
437
0
201 403
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Я думаю, вам нужен NUL, по крайней мере, в командной строке или в пакетных файлах.

Например:

type c:\autoexec.bat > NUL

не создает файл.

(У меня полагать то же самое верно, если вы пытаетесь создать файл программно, но я не пробовал.)

В PowerShell вам нужен $null:

echo 1 > $null

@ Джим: Интересно - я не знал, что вы можете писать в пути вне / dev / null, как если бы это был каталог. Хм.

Jon Skeet 19.03.2010 21:33

В Ubuntu: echo blah> /dev/null.txt bash: /dev/null.txt: Permission denied Может быть, это что-то специфическое для вашей системы ...

catphive 27.04.2010 03:56

@capthive: есть разница между /dev/null.txt и /dev/null/foo.txt.

Jon Skeet 27.04.2010 09:26

Я просто посмотрел на это еще раз и отказываюсь от своего первоначального утверждения. Я писал код, и ошибка проглатывалась. Удаляю, чтобы случайно никто не принял за правду.

Jim Hunziker 22.07.2010 23:30
Статья в Википедии / dev / null также указывает, что PowerShell обозначает $ null как приемлемый ... Только что попробовав это с помощью wget (часть GnuWin32), он принял $null в качестве пункта назначения, если указан с помощью --output-document=$null. NUL короче, поэтому я буду использовать его!
Chris Woods 28.11.2012 16:05

@Marwelln: Это точно не в Windows 8.0. echo foo > NULL, затем echo foo > NUL, затем dir n* покажет NULL, но не NUL.

Jon Skeet 08.10.2013 01:46

Для людей, которые ищут "специальные" файлы Unix под Windows: здесь - это драйверы устройств /dev/random и /dev/zero для Win32.

ulidtko 19.12.2014 14:06

Обратите внимание, что программе, которая часто выводит на стандартный вывод, потребуется такое же количество времени для завершения, если она будет перенаправлена ​​на NUL, хотя печатать нечего.

CodeManX 24.08.2015 02:52

@CoDEmanX: Это не мой опыт. Запись в консоль или даже в файл может занять значительное время. Я только что протестировал это с помощью программы, написавшей "Hello there" на стандартный вывод 10000000 раз. Перенаправление в файл (на SSD) заняло 18 секунд. Перенаправление на NUL заняло 4 секунды. Отсутствие перенаправления через некоторое время заставило меня сдаться из-за отсутствия терпения ...

Jon Skeet 24.08.2015 08:49

В моем тесте на Windows 7 с обычным жестким диском программа-пример заняла 0,67 секунды для записи в файл, 1,4 секунды для NUL и несколько минут для печати на консоль. Я думаю, это бывает по-разному, и есть несколько влияющих факторов.

CodeManX 24.08.2015 10:34

Вы также можете использовать C:\Windows\System32\drivers\null.sys.

Krii 18.03.2016 03:09

Еще в Win95 я узнал, что вы должны писать двоеточие после специальных имен устройств, поэтому NUL:CON:, PRN:, ...), это в основном вопрос стиля и ясно показывает, что NUL: - это особый объект, а не файл под названием NUL. Кроме того, с помощью специального API можно создать файл с именем NUL (см. Один из ответов). Я мечтаю, что, может быть, однажды, если все будут использовать двоеточие по соглашению, мы сможем отказаться от ужасных имен специальных устройств :-)

jdm 06.12.2016 16:47

Я провел несколько быстрых тестов с LinqPad, и похоже, что NUL не поддерживается Windows ни как имя файла, ни как элемент пути. Я предполагаю, что NUL - это только cmd.exe (следовательно, PowerShell требует вместо этого $ null).

David Anderson 17.01.2017 22:11
cat foobar 2> $null перенаправляет stderr на null.
ggorlen 19.11.2020 19:26

Согласно этому сообщение в списке рассылки GCC, вы можете использовать файл "nul" вместо / dev / 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;
}

(Кредиты Дэнни за этот код; скопировано из его сообщения.)

Вы также можете использовать этот специальный "нулевой" файл с помощью перенаправления.

Ах, это объясняет, почему, если вы создаете каталог C:\dev в Windows и используете множество утилит GNU, вы в конечном итоге получите таинственный файл с именем null в этом каталоге.

Klitos Kyriacou 29.12.2018 12:39

Джон Скит прав. Вот страница Драйвер устройства Nul в документации Windows Embedded (я понятия не имею, почему это не где-то еще ...).

Вот еще один:

Конечно, Джон Скит прав. Спасибо, что констатировали очевидную и универсальную правду :)

R. Martinho Fernandes 21.02.2009 06:41

2 ссылки здесь не работают. :(

Michael Foukarakis 01.01.2020 11:12

NUL в Windows кажется виртуальным путем в любой папке. Как и .., . в любой файловой системе.

Используйте любую папку, за которой следует NUL.

Пример,

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

имеют тот же эффект, что и /dev/null в Linux.

Это было протестировано на Windows 7, 64-разрядная версия.

Приятно, что на 64-битной Windows 7 невозможно создать файл с именем "nul" :)

David Ferenczy Rogožan 01.09.2015 17:22

@DawidFerenczy это возможно, хотя и не классическим способом. Например. md \\.\c:\nulquora.com/…, gohacking.com/how-to-create-con-folder-in-windows, superuser.com/questions/86999/…

phuclv 10.02.2016 12:42

В Windows 10 в bash первый создает файл nul

DrumM 28.08.2019 13:43

выбрасывает IOException с использованием java в win10. Просто нужно обернуть его, чтобы попробовать поймать. Надеялся, что не будет никаких исключений / ошибок, как / dev / null

MDuh 17.03.2020 23:12

NUL работает и программно. Например. последующий:

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

работает, как ожидалось, без создания файла. (MSVC++ 12.0)

Есть очень много раз, когда на вопрос нужно ответить с помощью NUL, и это было уже прошло 5 лет назад.

miken32 08.07.2017 02:55

Я думаю, что этот ответ вносит весомый вклад в обсуждение.

Jeroen 18.08.2017 23:35

Для этого в Windows PowerShell необходимо использовать Начало и $ NUL:

Введите эту команду, предполагая, что mySum - это имя вашего приложения, а 510 - аргументы командной строки, которые вы отправляете.

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

Команда start запустит отдельный процесс, аналогичный эффекту &. Параметр /B предотвращает запуск нового окна терминала, если программа, которую вы запускаете, является консольным приложением. NUL - это Windows-эквивалент /dev/null. 2>&1 в конце перенаправит stderr на stdout, который все перейдет на NUL.

Если вам нужно выполнить в Microsoft Windows эквивалент символической ссылки на /dev/null в Linux, вы должны открыть cmd администратора и ввести:

Для файлов:

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

Или для справочников:

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

Это сохранит файл / директорию всегда равным 0 байтам, и все равно будет возвращать успех каждой попытке записи.

Другие вопросы по теме