Как мне запросить файл, но не сохранить его с помощью Wget? [закрыто]

142

Я использую Wget для отправки HTTP-запросов на новый веб-сервер. Я делаю это, чтобы согреть кеш MySQL. Я не хочу сохранять файлы после их обслуживания.

wget -nv -do-not-save-file $url

Могу я сделать что-то подобное -do-not-save-fileс wget?

Т. Брайан Джонс
источник
3
Это лучший вопрос для суперпользователя или Unix.SE.
Мэтт Болл,
4
Как разработчик я хочу протестировать сервер с помощью wget, и этот вопрос серьезно по теме. Поскольку лучший ответ по теме получил 142 положительных голоса, этот вопрос следует снова включить как по теме
Младен Адамович
Вместо -q и -O используйте флаги -nd (без каталога) и --delete-after.
Suzana
2
Согласно справочной документации (wget -h), вы можете использовать параметр --spider, чтобы пропустить загрузку (версия 1.14).
rocky qi

Ответы:

259

Используйте qфлаг для тихого режима и укажите wgetвывод на стандартный вывод с помощью O-(в верхнем регистре o) и перенаправьте, /dev/nullчтобы отказаться от вывода:

wget -qO- $url &> /dev/null

>перенаправляет вывод приложения (в файл). если >предшествует амперсанд, оболочка перенаправляет все выходные данные (ошибки и нормальные) в файл справа от >. Если вы не укажете амперсанд, будет перенаправлен только нормальный вывод.

./app &>  file # redirect error and standard output to file
./app >   file # redirect standard output to file
./app 2>  file # redirect error output to file

если файл есть, /dev/nullто все отбрасывается.

Это тоже работает, но проще:

wget -O/dev/null -q $url
Perreal
источник
что делают в этой команде амперсанд и больше чем? можете ли вы просто направить вывод в / dev / null ... wget -qO- | / dev / null ...?
T. Brian Jones
Я пробовал это, и у меня это не сработало. Из того, что я выяснил, амперсанд должен стоять после символа «больше».
Tiago Espinha
7
Для пользователей Windows: wget -q -O NUL http: // ... Отключает ведение журнала и направляет загрузку на NUL (то же самое, что и / dev / null)
vidario
1
wget --spider $ url Сделает это.
thebugfinder
1
wget -O / dev / null $ url
Шторм
43

Curl делает это по умолчанию без каких-либо параметров или флагов, я бы использовал его для ваших целей:

curl $url > /dev/null 2>&1

Curl больше о потоках, а wget больше о копировании сайтов на основе этого сравнения .

Олег Михеев
источник
1
Холодно вы объясните, что означает 2> & 1? Я получаю> а почему конец?
apscience
2
@gladoscc сначала >/dev/nullперенаправляет std out на / dev / null ( >/dev/nullэто сокращение от 1>/dev/null), второй перенаправляет std err на std out.
Олег Михеев
@apscience Просто добавлю. Файловый дескриптор для вывода std равен 1. Оболочки предполагают вывод std, когда вы не используете дескриптор для перенаправления. Так >fooинтерпретируется как 1>foo. Когда &следует за перенаправлением, он указывает оболочке перенаправить предыдущий файловый дескриптор на тот же вывод, что и последующий. В этом случае 2>&1говорит перенаправить файловый дескриптор 2 (std err) в то же место, что и файловый дескриптор 1 (std out). Поскольку std out уже перенаправлен в / dev / null, std err также будет перенаправлен туда. Вы также можете написать: 1>/dev/null 2>/dev/nullили 2>/dev/null >&2.
ktbiz 01
Этот ответ правильный, но включает то же перенаправление вывода, что и выбранный ответ. Достаточно просто бегать curl http://www.example.com.
Аарон Чикали
43

Вы можете использовать -O-(верхний регистр o) для перенаправления содержимого на стандартный вывод (стандартный вывод) или в файл (даже специальные файлы, например /dev/null /dev/stderr /dev/stdout)

wget -O- http://yourdomain.com

Или:

wget -O- http://yourdomain.com > /dev/null

Или: (тот же результат, что и последняя команда)

wget -O/dev/null http://yourdomain.com
Марко Бискаро
источник
Спасибо, работает и с окнами.
Пиджонг
Спасибо, direct-to- / dev / null было умным и, следовательно, правильным ответом: мне нужен «вывод статистики», но не содержимое.
stolsvik