Як подати запит на файл, але не зберегти його за допомогою Wget? [зачинено]


140

Я використовую Wget для надсилання запитів на новий веб-сервер. Я роблю це, щоб зігріти кеш MySQL. Я не хочу зберігати файли після їх подання.

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

Чи можу я зробити щось на кшталт -do-not-save-filewget?


3
Це краще питання для Super User або Unix.SE.
Метт Бал

4
Як розробник я хочу протестувати сервер з wget, і чим це питання серйозно тематично. Оскільки найкраща відповідь на тему отримала 142 позитивні голоси, тож це питання слід повторно використовувати як тему
Младен Адамович

Альтернативно до -q і -O, використовуйте прапори -nd (без каталогу) і --delete-after.
Suzana

1
Відповідно до довідкового документа (wget -h), ви можете скористатися опцією --spider, щоб пропустити завантаження (версія 1.14).
rocky qi

Відповіді:


257

Використовуйте qпрапор для спокійного режиму і скажіть wgetдля виведення на stdout з O-(великим регістром o) та переадресації на, /dev/nullщоб відкинути вихід:

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

>перенаправляє вихід програми (до файлу). якщо >передує "ampersand", оболонка перенаправляє всі виходи (помилка та нормальність) праворуч від файлу >. Якщо ви не вказали ampersand, то буде переспрямовано лише нормальний вихід.

./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

що означають амперсанд і більше, ніж у цій команді? Ви можете просто передати висновок в / dev / null ... wget -qO- | / dev / null ...?
Т. Брайан Джонс

А я спробував це, і це не вийшло у мене. З того, що я з'ясував, амперсанд повинен вийти за символом, більшим за символ.
Тіаго Еспінья

7
Для користувачів Windows: wget -q -O NUL http: // ... Вимикає реєстрацію та завантаження маршрутів до NUL (те саме, що / dev / null)
vidario

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 до / dev / null ( >/dev/nullскорочується 1>/dev/null), другий перенаправляє std помиляється на std.
Олег Міхеєв

@apscience Просто додати. Дескриптор файлу для std out - 1. Оболонки припускають std, коли ви відключаєте дескриптор від переадресації. Так >fooтрактується як 1>foo. Коли &слідує за переадресацією, вона вказує оболонці перенаправити колишній дескриптор файлу на той же вихід , що і пізніше. У цьому випадку 2>&1дескриптор файлу 2 перенаправляє (std помилка) на те саме місце, що і дескриптор файлу 1 (виходить std). Оскільки std out вже переспрямовано на / dev / null, std помилка також буде переспрямована туди. Ви також можете написати: 1>/dev/null 2>/dev/nullабо 2>/dev/null >&2.
ktbiz

Ця відповідь правильна, але потім включає те саме переадресацію виходу, що і обрана відповідь. Просто бігу curl http://www.example.comдостатньо.
Аарон Цікалі

40

Ви можете використовувати -O-(великі регістри o) для переадресації вмісту на stdout (стандартний вихід) або на файл (навіть спеціальні файли на зразок /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

Thx, працює і на windows.
Pyjong

Дякую, директ-в / dev / null був розумним, і, таким чином, правильною відповіддю: я хочу "вихід статистики", але не вміст.
stolsvik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.