Как мне запросить файл, но не сохранить его с помощью Wget? [закрыто]
142
Я использую Wget для отправки HTTP-запросов на новый веб-сервер. Я делаю это, чтобы согреть кеш MySQL. Я не хочу сохранять файлы после их обслуживания.
wget -nv -do-not-save-file $url
Могу я сделать что-то подобное -do-not-save-fileс wget?
Это лучший вопрос для суперпользователя или 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
Холодно вы объясните, что означает 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)
Ответы:
Используйте
q
флаг для тихого режима и укажитеwget
вывод на стандартный вывод с помощьюO-
(в верхнем регистре o) и перенаправьте,/dev/null
чтобы отказаться от вывода:wget -qO- $url &> /dev/null
>
перенаправляет вывод приложения (в файл). если>
предшествует амперсанд, оболочка перенаправляет все выходные данные (ошибки и нормальные) в файл справа от>
. Если вы не укажете амперсанд, будет перенаправлен только нормальный вывод.если файл есть,
/dev/null
то все отбрасывается.Это тоже работает, но проще:
источник
Curl делает это по умолчанию без каких-либо параметров или флагов, я бы использовал его для ваших целей:
Curl больше о потоках, а wget больше о копировании сайтов на основе этого сравнения .
источник
>/dev/null
перенаправляет std out на / dev / null (>/dev/null
это сокращение от1>/dev/null
), второй перенаправляет std err на std out.>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
.curl http://www.example.com
.Вы можете использовать
-O-
(верхний регистр o) для перенаправления содержимого на стандартный вывод (стандартный вывод) или в файл (даже специальные файлы, например/dev/null
/dev/stderr
/dev/stdout
)Или:
Или: (тот же результат, что и последняя команда)
источник