Jak zażądać pliku, ale nie zapisać go w Wget? [Zamknięte]

140

Używam Wget do wysyłania żądań http do nowego serwera WWW. Robię to, aby ogrzać pamięć podręczną MySQL. Nie chcę zapisywać plików po ich udostępnieniu.

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

Czy mogę zrobić coś takiego -do-not-save-filez wget?

T. Brian Jones
źródło
3
To jest lepsze pytanie dla Super User lub Unix.SE.
Matt Ball
4
jako programista chcę przetestować serwer za pomocą wget, a to pytanie jest poważnie na temat. Ponieważ najlepsza odpowiedź na temat otrzymała 142 pozytywnych głosów, więc to pytanie powinno zostać ponownie włączone jako na temat
Mladen Adamovic
Alternatywnie do -q i -O, użyj flag -nd (brak katalogu) i --delete-after.
Suzana,
1
Zgodnie z dokumentacją pomocy (wget -h), możesz użyć opcji --spider, aby pominąć pobieranie (wersja 1.14).
rocky qi

Odpowiedzi:

257

Użyj qflagi dla trybu cichego i powiedz, wgetaby wyprowadzić na standardowe wyjście z O-(wielką literą o) i przekierować do, /dev/nullaby odrzucić wyjście:

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

>przekierowuje wyjście aplikacji (do pliku). jeśli >jest poprzedzone ampersandem, powłoka przekierowuje wszystkie wyjścia (błędy i normalne) do pliku na prawo od >. Jeśli nie określisz znaku ampersand, przekierowane zostanie tylko normalne wyjście.

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

jeśli plik ma wartość, /dev/nullwszystko jest odrzucane.

Działa to również i jest prostsze:

wget -O/dev/null -q $url
perreal
źródło
co robią ampersand i większe niż w tym poleceniu? czy możesz po prostu potokować wyjście do / dev / null ... wget -qO- | / dev / null ...?
T. Brian Jones
Uh, próbowałem tego i to nie zadziałało. Z tego, co się dowiedziałem, znak ampersand powinien występować po symbolu większym niż.
Tiago Espinha
7
Dla użytkowników systemu Windows: wget -q -O NUL http: // ... wyłącza logowanie i
trasowanie
wget --spider $ url Zrobi to.
thebugfinder
1
wget -O / dev / null $ url
Storm
43

Curl robi to domyślnie bez żadnych parametrów ani flag, użyłbym go do twoich celów:

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

W Curl chodzi bardziej o strumienie, a wget o kopiowanie witryn na podstawie tego porównania .

Oleg Micheev
źródło
1
Zimno wyjaśniasz, co oznacza 2> i 1? Dostaję> ale po co to koniec?
apscience,
2
@gladoscc pierwszy >/dev/nullprzekierowuje std out do / dev / null ( >/dev/nulljest skrótem od 1>/dev/null), a drugi przekierowuje std err na std out.
Oleg Mikheev
@apscience Wystarczy dodać. Deskryptor pliku dla wyjścia standardowego to 1. Powłoki przyjmują wyjście na wyjście standardowe, gdy zostawisz deskryptor z przekierowania. Tak >foojest interpretowane jako 1>foo. Gdy &następuje przekierowanie, instruuje powłokę, aby przekierowała poprzedni deskryptor pliku na to samo wyjście, co później. W tym przypadku, 2>&1mówi deskryptor pliku 2 przekierowania (błąd std) do tego samego miejsca, co deskryptor pliku 1 (wyjście std). Ponieważ std out jest już przekierowane do / dev / null, tam również zostanie przekierowany błąd std. Możesz też napisać: 1>/dev/null 2>/dev/nulllub 2>/dev/null >&2.
ktbiz
Ta odpowiedź jest poprawna, ale zawiera to samo przekierowanie wyjścia, co wybrana odpowiedź. Wystarczy bieganie curl http://www.example.com.
Aaron Cicali,
40

Możesz użyć -O-(wielkie litery o), aby przekierować zawartość na standardowe wyjście (standardowe wyjście) lub do pliku (nawet do plików specjalnych, takich jak /dev/null /dev/stderr /dev/stdout)

wget -O- http://yourdomain.com

Lub:

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

Lub: (taki sam wynik jak ostatnie polecenie)

wget -O/dev/null http://yourdomain.com
Marco Biscaro
źródło
Dzięki, działa również na oknach.
Pyjong
Dzięki, bezpośrednie połączenie do / dev / null było sprytne, a zatem poprawna odpowiedź: chcę „dane wyjściowe”, ale nie zawartość.
stolsvik